找不到指定网址的操作

时间:2012-11-01 20:01:31

标签: jsp struts

struts& amp;试图通过基本教程并收到错误InvalidPathException:找不到指定网址的操作配置

我的网址正在爆炸: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");
}

}

这是UserForm

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();

1 个答案:

答案 0 :(得分:2)

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

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

您还应该更喜欢请求范围的表单bean,并尊重Java命名约定(小写包)