1

strutsを初めて使用し、基本的なチュートリアルを実行しようとすると、InvalidPathException:指定されたURLのアクション構成が見つかりませんというエラーが発生します。

爆発している私の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>

私のUserAction.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>

submitFormはシンプルです

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

1 に答える 1

2

パスにマップされた単一のアクションを構成しました/user。したがって、このアクションを呼び出すURLはhttp://host:port/contextPathOfTheWebApp/user.doです。あなたの場合、アプリをルートアプリケーションとしてデプロイしたように見えるので、そうする必要がありますhttp://localhost:8080/user.do

JavaScriptを使用してフォームを送信する意味がわかりません。特に、正しいパスを間違ったパスに変更することだけが行われる場合。ところで、入力の1つでEnterキーを押すだけでフォームが送信された場合、JavaScriptコードはバイパスされます。

また、リクエストスコープのフォームBeanを優先し、Javaの命名規則(小文字のパッケージ)を尊重する必要があります。

于 2012-11-01T21:35:58.640 に答える