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
校验信息。
    
    我感觉好象是校验字段写的有问题,请大侠们帮忙解决。

解决方案 »

  1.   

    up~,没这么配过,我一般是在框架里写,
    加拦截器一般都写在struts.xml里
      

  2.   

    没用过struts2.0自带的验证。都说很麻烦并且不好用。
      

  3.   

    你的<field>的name属性写错了。你页面上是这么写的:
     <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()之类的方法用代码进行验证吧。呵呵。
      

  4.   

    field name 要和name="%{'batchTaskChildVO.batchParamVO['+#stat.index+'].paramId'}" 一致,要不然就会报像你说的那样的莫名奇妙的错误
      

  5.   

    你 struts。xml配置 input 返回页面了么。。
      

  6.   

    input 返回本页面 应该噢可了