我有一种情况,我想获取一些请求参数并在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之前会调用spring验证程序。因此,如果未本地化的其他字段出现验证错误,则为本地化字段输入的用户数据将被擦除。
因此,我想在验证器中读取requestParameters以解决上述问题。如果您有解决方案,请告诉我。
最佳答案
试试这个
使用Controller中的@RequestParam标记获取请求参数
并将请求参数设置为命令对象
并将命令对象传递给验证器:
例如:
@RequestMapping(method=RequestMethod.GET)
public ModelAndView getRequestParams(@RequestParam("abc") String param1 , @RequestParam("def") String param2, HttpServletRequest request, HttpServletResponse response){
CommandObject commObj = new CommandObject();
AbcValidator validator = new AbcValidator();
commanObj.setParam1(param1);
commanObj.setParam2(param2);
validator.validate(commandObj);
}
最好将验证器注入commandObj。试试上面的例子。