我正在使用struts2标签,我无法使用struts 2标签为以下代码创建表格
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上回答了类似的问题。在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访问值堆栈中的属性。
e.g
如果QueryResult
有两个属性
-name
-age
您可以在迭代器中引用它们,如
<s:iterator value="iteratorquery" var="queryResult">
<s:property value="#queryResult.name" />
<s:property value="#queryResult.age" />
</s:iterator>
希望这将有助于另外我建议你阅读struts2请求流程周期的基础以及OGNL如何在价值堆栈上找到值
答案 1 :(得分: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动作属性将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>