如何设置将在迭代器中使用的textfield的值

时间:2012-01-20 07:21:49

标签: java hibernate struts2

private Integer[] routeId; private String[] routeName;

我已经声明了这个数组和getter setter。现在我想在迭代器中设置它的值,如:

Iterator<Object> iter=tManager.getApprovedTourPlan(staffId,9).iterator();  
 tourList=new ArrayList<TourPlan>();  
 int i=0;  while(iter.hasNext())  { 
                Object[] tour = (Object[]) iter.next();   
                TourPlan tp=new TourPlan();    
                tp.setRouteId(0);
                tp.setRouteName("asd");  
                tourList.add(tp);
       }

在jsp上我将使用:

 <s:iterator list="tourList" var="tour"> <s:property
     name="#tour.routeId"> <s:property name="#tour.routeName">
 </s:iterator>

但是当我设定值时:

tp.setRouteId(0);  
tp.setRouteName("asd");

我无法设置值,因为它们接受数组。请告诉我如何处理。

1 个答案:

答案 0 :(得分:1)

从我得到的所有你需要的是嵌套迭代器,它们看起来像这样

<s:iterator value="lstBean" id="lstBean" status="outerStat">
        <s:textfield value="%{name}" name="lstBean[%{#outerStat.index}].name"/>
        <s:textfield value="%{amt}" name="lstBean[%{#outerStat.index}].amt"/>
        <s:textfield value="%{id}" name="lstBean[%{#outerStat.index}].id"/>
        <s:iterator value="%{lstString}" status="myStat">
            <s:textfield name="lstBean[%{#outerStat.index}].lstString[%{#myStat.index}]"/>
        </s:iterator>
    </s:iterator>

class XBean
{
    private ArrayList<String> lstString=new ArrayList<String>();
    private String name;
    private Double amt;
    private Integer id;
}

实施例

http://www.onlinexamples.com/showfullexample.action?idexamples=10&title=Nested%20Iterators%20Example

http://www.onlinexamples.com/showfullexample.action?idexamples=11&title=Iterator%20over%20an%20array/list%20of%20objects/beans