1、代码法
<%ValueStack valueStack = (ValueStack)request.getAttribute("struts.valueStack");String[] books = (String[])valueStack.findValue("books");for(String book : books){%><tr><td>BookName:</td><td><%=book%></td></tr><%}%>
这样虽然不好看,但是以后将HT 组件对象化后操作,用得上。
示例——actioin
public class GetBooksAction implements Action{private String[] books;public String[] getBooks() {return books;}public void setBooks(String[] books) {this.books = books;}public String execute() throws Exception{String user = (String)ActionContext.getContext().getSession().get("user");if( user != null && user.equals("gqltt") ){BookService bookService = new BookService();setBooks(bookService.getBooks());return SUCCESS;}return LOGIN;}
}
示例——jsp
<body><table><caption>Show Books</caption><%ValueStack valueStack = (ValueStack)request.getAttribute("struts.valueStack");String[] books = (String[])valueStack.findValue("books");for(String book : books){%><tr><td>BookName:</td><td><%=book%></td></tr><%}%></table></body>
注意加入:<%@ page import="com.opensymphony.xwork2.util.*" %>
2、标签法<s:iterator value="books" status="st"><s:if test="#st.odd == true"><tr style="background-color:#cccccc"></s:if><s:else><tr></s:else><td><s:property/></td></tr>
</s:iterator>
对 status 属性的
深入操作,给其 index 属性添加一个固定值
<s:iterator value="listDouble" status="st"><s:property value="#st.index + 4"/><s:property/><br/>
</s:iterator>