2011-11-11 45 views
0

我使用Struts2的標籤,我無法用struts 2個標籤下面的代碼我無法形成支柱表2個標籤爲Java列表<.String>

List<String> list_Fields; 
    List<QueryResult> iteratorquery; 
    List<String> List_rows; 

    for (int i = 0; i < iteratorquery.size(); i++) { 
     System.out.println(iteratorquery.get(i)); 
     QueryResult list_result = iteratorquery.get(i); 
     System.out.println(list_result.getFields()); 
     list_Fields = list_result.getFields(); 
     servletRequest.setAttribute("list", list_Fields); 
     for (int g = 0; g < list_Fields.size(); g++) { 
      System.out.println("Hello ListOFFields:" + list_Fields.get(g)); 
     } 

     List_rows = list_result.getRows(); 
     for (int h = 0; h < List_rows.size(); h++) { 
      System.out.println(List_rows.get(h)); 
      String rowList = List_rows.get(h); 
      System.out.println("Hello i am in Rows:" + rowList); 
     } 
    } 

由於事先創建表

+0

你究竟想要做什麼? –

回答

0

我已經回答了類似的問題上SO.Do這樣的事情在你的JSP

<table> 
<s:iterator value="list" status="listStatus"> 
    <tr> 
    <s:if test="#listStatus.even == true"> 
     <td style="background: #CCCCCC"><s:property/></td> 
    </s:if> 
    <s:elseif test="#listStatus.first == true"> 
     <td><s:property/> (This is first value) </td> 
    </s:elseif> 
    <s:else> 
     <td><s:property/></td> 
    </s:else> 
    </tr> 
</s:iterator> 
</table> 

有關更多詳細信息請參考以下問題上的SO

Table creation using Struts2 tag and Iterator

編輯

List<QueryResult> iteratorquery; 

我相信QueryResult是你的對象包含的結果我不知道有關QueryResult結構。 所以當我們使用struts2迭代器標籤迭代List<QueryResult>時,它會將QueryResult對象放在值棧上。

從值棧中訪問對象及其屬性堆棧是您所有選擇的,您可以使用OGNL訪問值堆棧內的屬性。

如 如果QueryResult有兩個prperty

-name 
-age 

你可以參考他們的迭代器裏面的東西一樣

<s:iterator value="iteratorquery" var="queryResult"> 
    <s:property value="#queryResult.name" /> 
     <s:property value="#queryResult.age" /> 
</s:iterator> 

希望這將有助於此外,我會建議你閱讀Struts2的請求的基本流程週期以及OGNL如何在值堆棧中找到值

OGNL

+0

對不起它不是,看上面的代碼是列表沒有條件檢查,請通過它,在我上面的是for循環裏面的兩個for循環,我要求幫助 – MohanMaverick

+0

@MohanMaverick:where你是否可以指定struts2標籤? –

+0

上面的方法是用java代碼我想迭代列表從字面上我在java中做了什麼。我在這裏面對像iteratorquery.get(i);在那段代碼中,你會告訴我怎樣才能讓我的元素在strut標籤中。 – MohanMaverick

0

目前還不清楚你想要做什麼。

至少,您將覆蓋「list」請求屬性的值。

據我所知,Java代碼歸結爲以下內容,並且您希望使用S2標籤編寫該代碼。

List<QueryResult> queryResults; 
for (QueryResult result : queryResults) { 
    List<String> fields = result.getFields(); 
    for (String field : fields) { 
     System.out.println("field: " + field); 
    } 

    List<String> rows = result.getRows(); 
    for (String row : rows) { 
     System.out.println("row: " + row); 
    } 
} 

如果是這樣的情況下,嚴格使用S2標籤,你會通過正常的S2 action屬性博覽會queryResults到JSP,並且用類似下面的結束:

<s:iterator value="queryResults" var="iq"> 
    <s:iterator value="iq.fields"> 
     <s:property /> 
    </s:iterator> 

    <s:iterator value="id.rows"> 
     <s:property /> 
    </s:iterator> 
</s:iterator> 

由於Umesh製作說,你可以用迭代器玩一些有趣的遊戲來幫助設計你的結果,儘管你可以使用OGNL和最少量的CSS來更簡潔地完成它。

<s:iterator value="results" status="status"> 
    <tr class="fields"> 
    <s:iterator value="fields"> 
     <td><s:property /></td> 
    </s:iterator> 
    </tr> 

    <s:set var="rowsStyle" value="#status.last ? 'last' : ''" /> 
    <tr class="<s:property value='#rowsStyle'/>"> 
    <s:iterator value="rows" status="rowStat"> 
     <s:set var="tdStyle" value="#rowStat.last ? 'last' : ''" /> 
     <td class="<s:property value='#tdStyle'/>"><s:property /></td> 
    </s:iterator> 
    </tr> 
</s:iterator> 
+0

謝謝,我在迭代字段和行值有問題,你用變種對於迭代器,但它示出了錯誤我,所以我用的ID爲,像如下 \t \t \t \t \t \t \t \t \t \t 我可以調試此代碼,但它不顯示行和字段可以請幫助我。 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t – MohanMaverick