私のばかげた質問と悪い英語でごめんなさい。Spring MVCを使用して、新しい開発済みWebでユーザーのパスワード変更メニューを検証しようとしています。
MultiActionControllerでSpring検証を実行する方法の指示に従いますか?
私はこのコードを書きます:
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());
オブジェクト名が「ChangePasswordForm」であるjspのコマンド名ではなく「command」であることを示しています。そのcommandNameを「command」に変更しようとすると機能します。しかし、私はBindExceptionクラスでObjectNameを設定する方法があるのか、それともデフォルトの「コマンド」オブジェクト名の代わりにカスタム名を使用する別の方法があるのか、興味がありますか?
アップデート
commandNameを"command"に変更して次のようにすると、検証が機能します。
<form:form action="update.htm" commandName="command">
<!-- Form Field and Error define here -->
</form:form>
もちろん、コントローラーでも調整を行います。別の名前に変更すると、機能しなくなります。
Spring Framework3.0.2RELEASEを使用しています。