jspページactionプロパティの取得方法

2196 ワード

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.xwork 2.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>