如何在spring验证器中获取请求参数?

时间:2012-07-23 06:12:47

标签: java spring spring-mvc

我有一个场景,我想获得一些请求参数并在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">&nbsp;&nbsp;</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 validator。因此,当其他未本地化的字段存在验证错误时,为本地化字段输入的用户数据将被删除。

所以,我想阅读验证器中的requestParameters来解决上述问题。如果你有解决方案,请告诉我。

1 个答案:

答案 0 :(得分:1)

试试这种方式,

使用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,验证器。试试上面的例子。