2012-01-20 61 views
0
private Integer[] routeId; private String[] routeName; 

我已經聲明瞭這個數組和getter setter。現在,我想在這樣的迭代器來設置它的值:如何設置將在迭代器中使用的textfield的值

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"); 

我無法設置值,因爲它們接受數組。請告訴我如何處理。

+0

難道你不能只是創建一個'Integer'數組並將其設置在你的'TourPlan'中?那是什麼問題? –

+0

假設我在while循環中得到了30條tourPlan記錄,並且我設置了tp.setRouteId(integerArray);那麼在jsp上每條記錄都會有多個routeId,Isnt呢?我想要一條記錄的路線。 – Jitendra

+0

在這種情況下,你的方法是錯誤的。在所有你需要的數組的地方是'routeid'和'routename'。所以我不確定使用數組的目的是什麼? –

回答

0

從我所得到的一切,你是嵌套的迭代器,他們會是這個樣子

<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