由于 Spring MVC 中不存在 URL,验证表单提交按钮在第二次尝试后返回 404
Posted
技术标签:
【中文标题】由于 Spring MVC 中不存在 URL,验证表单提交按钮在第二次尝试后返回 404【英文标题】:Validation Form submit button returns 404 after second try because of not existing URL in Spring MVC 【发布时间】:2018-03-20 11:38:00 【问题描述】:我在 Spring - MVC 中遇到了表单验证问题。首先,我有这个 .jsp 页面,其中要求提交表单,要求输入用户名和密码。
请输入您的凭据以登录
<form:form method="POST" commandName="user" action="user/doLogin">
<form:errors path="*" cssClass="errorblock" element="div" />
<table>
<tr>
<td>User Name :</td>
<td><form:input path="name" /></td>
<td><form:errors path="name" cssClass="error" /></td>
</tr>
<tr>
<td>User Password :</td>
<td><form:password path="password" /></td>
<td><form:errors path="password" cssClass="error" /></td>
</tr>
<tr>
<td colspan="3"><input type="submit" /></td>
</tr>
</table>
</form:form>
这个表单背后的控制器是 LoginController.java
@控制器
@RequestMapping("/user")
public class LoginController
@RequestMapping(value = "/doLogin")
public String doLogin(@Valid User user, BindingResult result, ModelMap model)
if (result.hasErrors())
return "user";
else
model.addAttribute("name", user.getName());
return "Done";
@RequestMapping(method = RequestMethod.GET)
public String displayUserForm(ModelMap model)
model.addAttribute("user", new User());
return "user";
在我的模型包中,我有我使用的用户对象
org.hibernate.validator.constraints.NotEmpty;
org.hibernate.validator.constraints.Range;
用于验证目的。
验证工作完美,但问题是,每当我在表单中输入错误的凭据并收到相应的消息时,下一次提交凭据时,由于第二次调用提交按钮后的 URL 错误,我会收到 404 错误和doLogin() 函数(用户/用户/doLogin)。我应该怎么做才能使其正常工作?在此先感谢您的任何信息 ! :)
【问题讨论】:
【参考方案1】:使用modelAttribute="users"
代替commandName="user"
您也缺少第二个请求的值,如果未指定值,则无法调用此方法。
@RequestMapping(value="?" , method = RequestMethod.GET)
public String displayUserForm(ModelMap model)
model.addAttribute("user", new User());
return "user";
【讨论】:
以上是关于由于 Spring MVC 中不存在 URL,验证表单提交按钮在第二次尝试后返回 404的主要内容,如果未能解决你的问题,请参考以下文章
多个领域来处理 Spring MVC 和 shiro 中不同 url 集的身份验证