2014-07-23 63 views
1

我通过这个 Struts2 Validation for an array如何:Struts 2个的验证动态表单阵列

阅读,它是有道理的,但希望人(四元)将解释如何

“重写上面的具体姓名字段(与索引)在这种情况下,你可以使用,你会使用addFieldError方法要详细了解这些标签看http://struts.apache.org/2.3.1.2/docs/tag-reference.html

这是我有:

<s:form action="saveOrUpdateAction" method="get"> 
    <s:token/> 
    <table> 
     <tr> 
      <td> Fund </td> 
      <td> Award Code </td> 
     </tr> 
     <s:iterator value="gfeListWithEmptyCode"> 
      <tr> 
       <td> <s:property value="sfafund "/> </td> 
       <td> <s:property value="awardcode"/> 
        <input type="text" name="codeArray"> 
       </td> 
      </tr> 
     </s:iterator> 
     <s:token /> 
     <s:submit key="Submit2"/> 
    </table> 
</s:form> 

我的行动的一部分:

public void validate() 
{ 
    if (fund == null || fund.trim().length() != 5) 
    { 
     System.out.println("testing+++++++++++++++++++1"); 
     addFieldError("fund","Fund requires 5 characters."); 
    } 
    if (code == null || code.trim().length() != 3) 
    { 
     System.out.println("testing+++++++++++++++++++2"); 
     addFieldError("code","Fund requires 3 characters."); 
    } 


    if (gfeListWithEmptyCode !=null) 
    { 

     int index = 0; 
     for (GiftFundEntity giftFundEntity : gfeListWithEmptyCode) 
     { 
      if (codeArray[index]!=null && codeArray[index].length() < 3) 
      { 

       System.out.println("testing+++++++++++++++++++3"); 

       // technically, this is not possible to do because it requires codeArray[index] and not a string. 

       addFieldError("codeArray","Code requires 3 characters."); 
       index++; 
      } 
     } 
    } 


    try 
    { 
     this.execute(); 
    } catch (Exception e) 
    { 
     e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. 
    } 
} 

在验证过程中,红色的错误信息不会出于显而易见的原因,因为codeArray不被索引中列出的JSP页面上显示出来。我如何得到这个工作? *请注意*该阵列是动态的。

我查看了struts文档,并通过了stackoverflow搜索,但我不明白它是如何做到的。

谢谢你的时间。

+0

显示你的jsp代码? – hari

回答

0

答案是Struts 2将Action类中的codeArray变量视为Array:String [] codeArray;这没有记录。