能正常登录,注册时出了问题,好几天了,求高手解决(我改过表单和配置文件的命名空间,最后的结果是不出错也没结果,只停留在注册页面)错误提示:
  警告: Could not find action or resul
There is no Action mapped for namespace / and action name register. - [unknown location]

at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:178)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
at java.lang.Thread.run(Thread.java:662)
register.jsp表单部分代码:
  <form action="register" method="post" namespace="/strutsregister"  validate="true">
register.xml  代码:
<package name="strutsregister" namespace="/strutsregister" extends="struts-default" >
        <action name="register" class="com.strutslogin.action.RegisterAction">
<result name="success" >/register.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>RegisterAction代码:
package com.strutslogin.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.strutslogin.DAO.UserDao;
import com.strutslogin.DAOImpl.UserDaoImpl;
import com.strutslogin.model.User;
public class RegisterAction extends ActionSupport {
    private User user = new User(); 
    UserDao userDao = new UserDaoImpl();
    private String result;
    
   private String name;
   private String password;
   private String repassword;
   public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRepassword() {
return repassword;
}
public void setRepassword(String repassword) {
this.repassword = repassword;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}private String email;
    //实现ModernDriver的getModel方法
//public User getModel() {
// return user;
// }
   public String getResult() {
return result;
}
    public void setResult(String result) {
this.result = result;
}
     //处理登陆请求的execute方法
public String exectue() throws Exception{

this.user.setName(name);
this.user.setPassword(password);
this.user.setRepassword(repassword);
this.user.setEmail(email);
try{
this.userDao.add(user);
}catch(Exception e){
this.addActionError(e.getMessage());
return INPUT;

result= "用户<" + user.getName() + ">注册成功";


return result;
}


}

解决方案 »

  1.   

    form 里哪来的namespace属性!
    把action="strutsregister/register"
      

  2.   

    return result; 修改为return SUCCESS;return result;表示配置中有一个<result>节点的name为 result这个字符串的内容。
      

  3.   

      注册成功后会弹出一个对话框,显示result内容,提示注册成功,所以是return reslut
      

  4.   

    很明显,你的execute()返回的值既不是“success”也没有“input”,result 值与xml文件的不一致。
      

  5.   

    1楼 2楼说的对,你先按照1 2 楼的改如果还不好使,你就让struts2跳转到自己的方法吧,别用exectue()了
      

  6.   

    JSP文件和XML文件中的namespace属性值先去掉,再把return result; 修改为return SUCCESS