【发布时间】:2013-01-16 08:08:05
【问题描述】:
对不起,我的问题很愚蠢,英语不好。 我尝试使用 Spring MVC 在我的新开发 Web 中对用户更改密码菜单进行一些验证。
我听从How to perform Spring validation in MultiActionController?的指示
我写了这段代码:
public ModelAndView hanldeBindException(HttpServletRequest request, HttpServletResponse response, ServletRequestBindingException bindingException) {
BindException bindException = (BindException) bindingException.getRootCause();
ModelMap modelmap = new ModelMap();
ChangePasswordForm cpForm = new ChangePasswordForm();
cpForm.setUsername(SessionHelper.getUsername());
modelmap.addAttribute("ChangePasswordForm", cpForm);
return new ModelAndView("changepassword").addAllObjects(bindException.getModel()).addObject("ChangePasswordForm", cpForm);
}
在我的jsp中:
<form:form action="update.htm" commandName="ChangePasswordForm" >
<form:errors path="*" cssClass="errorblock" element="div" />
<table class="form">
<tr>
<td class="col1"><label>User Name :</label></td>
<td class="col2"><form:label path="username" >${ChangePasswordForm.username}</form:label></td>
</tr>
<tr>
<td><label>Old Password :</label></td>
<td><form:password path="oldPassword" id="oldPassword"></form:password>
<form:errors path="oldPassword" cssClass="error" /></td>
</tr>
<tr>
<td><label>New Password :</label></td>
<td><form:password path="newPassword"></form:password>
<form:errors path="newPassword" cssClass="error" /></td>
</tr>
<tr>
<td><label>Confirm New Password :</label></td>
<td><form:password path="confirmNewPassword"></form:password>
<form:errors path="confirmNewPassword" cssClass="error" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="submit" ></td>
</tr>
</table>
</form:form>
但是当我尝试像空字段这样的否定测试时,它不会在我的屏幕上出现任何错误。 当我尝试打印出来时
System.out.println("UserController::hanldeBindException::1" + bindException.getObjectName());
它显示对象名称是“command”,而不是我在 jsp 中的命令名称是“ChangePasswordForm”。当我尝试将该命令名更改为“命令”时,它可以工作。但我只是好奇是否有一些方法可以在 BindException 类中设置对象名,或者你有另一种方法来使用自定义名称而不是默认的“命令”对象名称??
更新
我的验证有效,因为我将 commandName 更改为“command”,如下所示:
<form:form action="update.htm" commandName="command">
<!-- Form Field and Error define here -->
</form:form>
当然也可以在我的控制器中进行一些调整。如果我将其更改为另一个名称,它将不再起作用。
我使用 Spring Framework 3.0.2 RELEASE。
【问题讨论】:
标签: java spring-mvc validation