tomcat7 + struts2でwebアプリケーション(4) iterator

リスト構造のデータをまわして取得する。
ついでにifタグも使ってみる。

(1)リストに挿入するInputModelオブジェクトにメンバ追加

import java.io.Serializable;


public class InputModel implements Serializable{
	private String username;
	private String password;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}



}

(2)アクションのメンバにリストを追加。
ついでにexecuteメソッドでインスタンスを追加。

import java.util.ArrayList;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;


public class TestAction extends ActionSupport implements ModelDriven<InputModel> {
	private InputModel model = new InputModel();
	private ArrayList<InputModel> list = new ArrayList<>();

	@Override
	public String execute() throws Exception {
		InputModel listData = new InputModel();
		listData.setUsername("satou");
		listData.setPassword("hello");
		list.add(listData);
		listData = new InputModel();
		listData.setUsername("tanaka");
		listData.setPassword("bye");
		list.add(listData);

		return "success";
	}

	@Override
	public InputModel getModel() {
		return model;
	}

	public ArrayList<InputModel> getList() {
		return list;
	}

	public void setList(ArrayList<InputModel> list) {
		this.list = list;
	}

}

(3)結果ページにテーブルを追加(result.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="java.util.ArrayList" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>result</title>
</head>
<body>

<s:property value="username"/>

<table border="1">
	<tr><th>name</th><th>pass</th></tr>
	<%-- リスト要素のオブジェクトのメンバを指定 --%>
	<s:iterator value="list">
		<tr><td><s:property value="username"/></td><td><s:property value="password"/></td></tr>
	</s:iterator>
</table>

<%-- 単にリストの中身を表示する --%>
<s:iterator value="list">
	<s:property />
</s:iterator>
</body>
</html>

リファレンスを見ると、リストの開始位置や終了位置の指定や、タグ内での配列の生成などもできるみたい。

(4)奇数のときは背景色を変更(result.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="java.util.ArrayList" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>result</title>
</head>
<body>

<s:property value="username"/>

<table border="1">
	<tr><th>name</th><th>pass</th></tr>
	<%-- リスト要素のオブジェクトのメンバを指定 --%>
	<s:iterator value="list" status="status">
		<tr <s:if test="#status.odd">style="background:grey"</s:if>><td><s:property value="username"/></td><td><s:property value="password"/></td></tr>
	</s:iterator>
</table>

<%-- 単にリストの中身を表示する --%>
<s:iterator value="list">
	<s:property />
</s:iterator>
</body>
</html>

(5)要素数をカウントしながら表示する(result.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="java.util.ArrayList" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>result</title>
</head>
<body>

<s:property value="username"/>

<table border="1">
	<tr>
		<th>id</th>
		<th>name</th>
		<th>pass</th>
	</tr>
	<%-- リスト要素のオブジェクトのメンバを指定 --%>
	<s:iterator value="list" status="status">
		<tr <s:if test="#status.odd">style="background:grey"</s:if>>
			<td><s:property value="#status.count"/></td>
			<td><s:property value="username"/></td>
			<td><s:property value="password"/></td>
		</tr>
	</s:iterator>
</table>

<%-- 単にリストの中身を表示する --%>
<s:iterator value="list">
	<s:property />
</s:iterator>
</body>
</html>