いくつかのリクエストパラメータを取得し、Springバリデーターで検証したいというシナリオがあります。Springバリデーターでリクエストパラメーターを取得する方法を教えてもらえますか?
ありがとう。
<c:forEach items="${serviceLocaleList}" var="item" varStatus="count">
<table>
<tr>
<td width="2%" class="formbutton1">
<a id="displayText" href="javascript:toggleDivVisibility('myDiv'+'<c:out value="${count.index}"/>',document.getElementById('plusMinusImg'+'<c:out value="${count.index}"/>'))" >
<img alt="Show/Hide Filters" src="../images/fold-collapse.gif" id="plusMinusImg<c:out value="${count.index}"/>" />
</a>
</td>
<td width="98%" class="formbutton1" valign="middle" align="left">
<b><c:out value="${item.language}"></c:out></b>
</td></tr>
</table>
<input type="hidden" name="language<c:out value="${count.index}"/>" value="<c:out value='${item.language}'/>">
<div id="myDiv<c:out value="${count.index}"/>" style="display: block">
<table width="100%" border="0" align="center" cellpadding="0"
cellspacing="0" style="border: 1px solid black;">
<tr>
<td class="tabRowLeft" width="20%"><fmt:message key='name' /><font color="#FF0000">*</font></td>
<td class="partner_regn_tr" width="70%">
<input id="Name<c:out value="${count.index}"/>" type="text" size="83" maxlength="25" name="Name<c:out value="${count.index}"/>" disabled/>
<font color="#FF0000"> </font>
</td>
</tr>
私の要件は、動的にローカライズされたデータを取得して検証することです。私は実際にコントローラーでカスタムバリデーターメソッドを呼び出すことによってこれを行っています。
ServiceRegistrationValidator validator = (ServiceRegistrationValidator) getValidator();
//Validate all the request parameters that belongs to Sevrice presentation
validator.validateHttpRequestParameters(request, errors);
上記のコード行で、検証は正常に機能しています。しかし、検証エラーがあると、ユーザーデータが消去されていることがわかりました。コマンドオブジェクトに設定されていないためです。
requestParameterから読み取った後、commanオブジェクトに設定してみました。ただし、春のバリデーターはonSubmitを呼び出す前に呼び出されます。そのため、ローカライズされていない他のフィールドの検証エラーが発生すると、ローカライズされたフィールドに入力されたユーザーデータが誤って表示されます。
したがって、上記の問題を解決するために、バリデーターでrequestParametersを読み取りたいと思います。解決策があれば教えてください。