1

struts 新手并尝试通过基本教程并收到错误 InvalidPathException: No action config found for the specified url

我爆炸的网址是:http://localhost:8080/UserAction.do?method=add

这是我的 struts-config.xml 的一部分

<struts-config>
    <form-beans>
        <form-bean name="UserForm" type="Form.UserForm" />
    </form-beans>
    <action-mappings>
        <action path="/user" type="Action.UserAction"  input="/pages/user.jsp"  parameter="method"  name="UserForm" scope="session">
   <forward name="success" path="pages/user.jsp">
    </action-mappings>
</struts-config>

我的用户操作.Java

public class UserAction extends DispatchAction {

   public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

    //Do some stuff
    UserForm userForm = (UserForm)form;
    userForm.setMessage("Added user");
    return mapping.findForward("success");
}

}

这是用户表单

public class UserForm extends ActionForm {

   private String message;

   public UserForm() {
       super(); 
   }

   public String getMessage() { return this.message; }

   public void setMessage(String inMessage) { this.message = inMessage; }

}

最后我的 user.jsp

<html>
....
<html:form action="user">
   <table>  
     <tr> 
       <td>
         <html:submit value="add"  onClick="submitForm()"  />
       </td> </tr></table></html:form>
</html>

提交表单很简单

function submitForm(){
   document.forms[0].action = "UserAction.do?method=add"
   document.forms[0].submit();
4

1 回答 1

2

您配置了单个操作,映射到 path /user。所以调用这个动作的 URL 是http://host:port/contextPathOfTheWebApp/user.do. 在您的情况下,由于您似乎将应用程序部署为根应用程序,因此它应该是http://localhost:8080/user.do.

我没有看到用 JavaScript 提交表单的意义。特别是如果它唯一要做的就是将正确的路径更改为不正确的路径。顺便说一句,如果只是通过在其中一个输入中按 enter 来提交表单,则 JavaScript 代码将被绕过。

You should also prefer request-scoped form beans, and respect the Java naming conventions (packages in lower-case)

于 2012-11-01T21:35:58.640 回答