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();
答案 0 :(得分:2)
您配置了一个映射到路径/user
的操作。因此,调用此操作的URL为http://host:port/contextPathOfTheWebApp/user.do
。在您的情况下,由于您似乎将应用程序部署为根应用程序,因此它应为http://localhost:8080/user.do
。
我认为用JavaScript提交表单没有意义。特别是如果它唯一做的就是将正确的路径更改为不正确的路径。顺便说一句,如果通过在其中一个输入中输入来提交表单,则会绕过JavaScript代码。
您还应该更喜欢请求范围的表单bean,并尊重Java命名约定(小写包)