2012-02-14 51 views
0

我對jsp中使用迭代器標籤訪問ArrayList數組存在疑問。使用Struts 2迭代器標籤訪問ArrayList數組

在我的動作類我用下面的代碼..,

ArrayList[] arr= new ArrayList[10]; 

for(int i = 0; i < 10; i++) { 
    arr[i] = new ArrayList<bean>(); 
} 

while (some conditions) { 
    arr[i].add(new bean(some values)); 
    i++; 
} 

我的問題是..我如何可以訪問ARR [0],編曲[1] ...改編[N]的ArrayList在迭代器..?

下面的代碼工作完美..,但請改進它來實現我的結果..!

<s:iterator value="display.arr[0]"> 
    ... 
</s:iterator> 

幫助將不勝感激..!

+1

改進方法?我以爲你說它正在工作。 – 2012-02-14 12:45:27

+0

你好戴夫..!感謝您的回覆..!我只是實現了訪問數組的單個索引(a [0])。但我需要的是使用迭代器訪問數組的整個索引。這是一些像''s:iterator value =「display.arr」> ... ' – 2012-02-15 04:02:50

+0

'動態索引在某種意義上,它需要爲外部迭代器的每次迭代更改或增加! – 2012-02-15 04:12:51

回答

0

我想知道你是否看過iterator tag documention很多;至少有3-4種方式可以做到這一點,包括使用即時索引列表,使用"begin"/"end"屬性,使用"var"來保存外部項目(不是絕對必要的,但IMO更具有溝通性)等等。

假設一個Bean類名爲"s"財產,我稱之爲SomeBean

<s:iterator value="displays" var="display"> 
    <s:iterator value="#display"> 
    ${s}<br/> 
    </s:iterator> 
</s:iterator> 

使用底部的Java代碼,這將產生以下輸出:

Outer: 0, Inner: 0 
Outer: 0, Inner: 1 
Outer: 0, Inner: 2 
Outer: 1, Inner: 0 
Outer: 1, Inner: 1 
Outer: 1, Inner: 2 
Outer: 2, Inner: 0 
Outer: 2, Inner: 1 
Outer: 2, Inner: 2 

駕駛此代碼的完整操作;我只是每次都返回一個新的列表爲例:

public class NestedListsAction extends ActionSupport { 

    public List<List<SomeBean>> getDisplays() { 
     List<List<SomeBean>> displays = new ArrayList<List<SomeBean>>(); 

     for (int i = 0; i < 3; i++) { 
      List<SomeBean> innerList = new ArrayList<SomeBean>(); 
      for (int j = 0; j < 3; j++) { 
       innerList.add(new SomeBean(String.format("Outer: %d, Inner: %d", i, j))); 
      } 
      displays.add(innerList); 
     } 

     return displays; 
    } 

    private class SomeBean { 
     private String s; 

     public SomeBean(String s) { 
      this.s = s; 
     } 

     public String getS() { 
      return s; 
     } 
    } 

} 

注意SO policy on accepting answers。通常我不會把它提交給一個新用戶,但是海事組織我花費更多的精力來回答這個問題,而不是研究它,這讓我感到沮喪。