Struts2validation数组

问题:如何validation数组的元素?

我想写一个简单的应用程序,要求用户使用struts2输入10个数字。

enter.jsp

      Enter 10 numbers!   

Please enter 10 numbers

我使用迭代器生成10个textarea,供用户输入数字。 我希望所有领域都是必需的。

NextAction.java

 import com.opensymphony.xwork2.ActionSupport; import java.util.ArrayList; public class NextAction extends ActionSupport{ private Integer[] number; public Integer[] getNumber() { return number; } public void setNumber(Integer[] number) { this.number = number; } public String execute(){ return "success"; } } 

这个class级唯一的属性是数字。 请注意,因为我生成了10个具有相同名称“number”的textarea,所以我在这个类中得到的“数字”将是一个长度为10的整数数组。当我不使用下面的validation时,我可以很容易地得到用户输入的数字(即number [i]),并在另一个jsp中显示它们。

web.xml中

   Number  enter.jsp   struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter   struts2 /*   

在struts.xml

       success.jsp result name="input">enter.jsp    

个动作-validation.xml中

          1 100     

但是当我添加这个validation时,因为字段“number”是数组,那么这个validation将不起作用。(如果只有一个textarea命名为’number’,那么这个validation就没问题。但是我们有10个)

我的问题是如何validation数组的每个元素,我们从提交的表单中获取? 希望我的问题很清楚。

谢谢

您不太可能重用此validation器,因此只需在操作中使用validate:

 import com.opensymphony.xwork2.ActionSupport; import java.util.ArrayList; public class NextAction extends ActionSupport{ private Integer[] number; public Integer[] getNumber() { return number; } public void setNumber(Integer[] number) { this.number = number; } //Following is default behaviour so it is not worth writing //public String execute(){ // return "success"; //} //add validation in action (_not tested_) public void validate(){ if (number.length > 10){ this.addActionError("Error: More than ten numbers supplied."); }else if (number.length < 10){ this.addActionError("Error: Less than ten numbers supplied."); } for (int i = 0; i < number.length; i++){ if(number[i] < 0){ this.addActionError("Error: Number " + (i + 1) + " is less than zero."); }else if(number[i] > 100){ this.addActionError("Error: Number " + (i + 1) + " is greater than 100."); } } } } 

然后使用显示jsp中的字段错误,或者重写上面的内容以专门命名字段(带索引),在这种情况下可以使用,然后使用addFieldError方法。 有关这些标签的详细信息,请参阅http://struts.apache.org/2.3.1.2/docs/tag-reference.html