action-function-validation.xml : <field name="batchTaskChildVO.batchParamVO[*].paramId">
<field-validator type="requiredstring">
<message >Parameter Name is required.</message>
</field-validator>
</field>
<field name="batchTaskChildVO.batchParamVO[*].value">
<field-validator type="requiredstring">
<message >Parameter value is required.</message>
</field-validator>
</field>JSP :
<s:iterator value="new int[#request.childNum]" status="stat">
<tr height="20">
<td><s:textfield name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].paramId'}" /></td>
<td><s:textfield name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].value'}" /></td>
<td><s:textfield name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].memo'}" /><
/td></tr>
</s:iterator>
其中
batchTaskChildVO.batchParamVO 为List对象
注: action 、vo 中 getter/setter方法都有 ,拦截器配置正确 错误现象:
程序在没有添加validation.xml时,按照正确输入方法可以保存成功。
当加入validation.xml后,按照正确输入方法输入后点保存,竟然返回input 并提示struts
校验信息。
我感觉好象是校验字段写的有问题,请大侠们帮忙解决。
<field-validator type="requiredstring">
<message >Parameter Name is required.</message>
</field-validator>
</field>
<field name="batchTaskChildVO.batchParamVO[*].value">
<field-validator type="requiredstring">
<message >Parameter value is required.</message>
</field-validator>
</field>JSP :
<s:iterator value="new int[#request.childNum]" status="stat">
<tr height="20">
<td><s:textfield name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].paramId'}" /></td>
<td><s:textfield name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].value'}" /></td>
<td><s:textfield name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].memo'}" /><
/td></tr>
</s:iterator>
其中
batchTaskChildVO.batchParamVO 为List对象
注: action 、vo 中 getter/setter方法都有 ,拦截器配置正确 错误现象:
程序在没有添加validation.xml时,按照正确输入方法可以保存成功。
当加入validation.xml后,按照正确输入方法输入后点保存,竟然返回input 并提示struts
校验信息。
我感觉好象是校验字段写的有问题,请大侠们帮忙解决。
解决方案 »
- 光棍节程序员闯关秀-最后一关求解
- 有初始值的输入框,在提取值得时候怎么才能正确提取输入的值?
- 求救:java.lang.NegativeArraySizeException,用jspsmartupload出现的错误
- 谁给个resin3.0.19 windows版本---100分相赠
- 求一段日期转换成当年周数的代码!
- Properties prop = new Properties(); Properties是做什么用的
- [高分求解]Tomcat服务器下如何配置并使用可执行CGI,扩屏名是exe的。
- 高手们指点一下!
- connect.setAutoCommit ( false/true ) 对程序有什么影响啊?
- 请问中型企业开发web应用(广域网internet)用什么服务器(包括jsp容器和其他)比较好,够用就好
- 关于hibernate分页
- 求一匹配“{0}”的正则表达式
加拦截器一般都写在struts.xml里
<s:textfield name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].paramId'}" />
<s:textfield name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].value'}" />
你在这里动态给表单元素指定了名称,那么你在验证文件中配置时应该采用name的实际值,可是你是这么配置的:
<field name="batchTaskChildVO.batchParamVO[*].paramId">
<field name="batchTaskChildVO.batchParamVO[*].value">
这些值与页面上表单元素的name的实际值显然是不符合的。换句话说,你配置的这两个“字段”永远也无法得到值,当然就通不过验证啦。解决方法:
先在配置文件中加上${}试试
<field name="${batchTaskChildVO.batchParamVO[*].paramId}">
<field name="${batchTaskChildVO.batchParamVO[*].value}">
这种方式我没试过,不确定一定能行哦。如果不行,把你页面的客户端的源码(浏览器中看到的源代码)贴出来,看看有没有好的解决方案。或者,你干脆写个validateExecute()之类的方法用代码进行验证吧。呵呵。