ListUserAction.javaに以下の記述をします。
/*
* ユーザ一覧表示画面サンプル
*/
package pkg.sample;
import java.util.ArrayList;
import org.apache.struts2.config.ParentPackage;
import com.opensymphony.xwork2.ActionSupport;
/*
* ユーザ一覧表示アクションクラス
*/
@ParentPackage(value="mydefault")
public class ListUserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
public ArrayList<UserBean> userlist = new ArrayList<UserBean>();
// 「/listUser.action」を呼び出した際に、自動的にこの
// execute()メソッドが実行される。
public String execute() {
UserDAO userdao = UserDAO.getInstance();
userlist.addAll( userdao.selectAll() );
// 「SUCCESS」を返却すると、自動的に「listUser-success.jsp」が
// 呼び出される。もし存在しなければ「listUser.jsp」が呼び出される。
return SUCCESS;
}
public ArrayList<UserBean> getUserlist() {
// jspから<s:property value="userlist" />で参照可能。
return userlist;
}
public int getUserCount() {
// jspから<s:property value="userCount" />で参照可能。
return userlist.size();
}
}
(1) 「@ParentPackage」アノテーションを指定して、独自パッケージである
「mydefault」を使用することを宣言します。
※この記述がないと、struts標準パッケージであるstruts-defaultが
適用されてしまいます。
(2) 「/ListUser.action」の呼出時に実行される execute()メソッドでは
UserDAOを検索して登録中のユーザ一覧を取得し、ArrayListであるuserlist変数に
格納しています。
(3) その後「return SUCCESS;」により、「listUser-success.jsp」を表示します。
listUser-success.jspに以下の記述をします。
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="Windows-31J"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>List User</title>
</head>
<body>
ユーザ一覧<br /><br />
<!-- ListUserAction.getUserCount()が呼び出される。 -->
ユーザ数 : <s:property value="userCount" />人 <br /><br />
<table border="1">
<tr>
<th>ID</th>
<th>ユーザID</th>
<th>パスワード</th>
<th>氏名</th>
<th>出身地</th>
<th> </th>
<th> </th>
</tr>
<!-- ListUserAction.getUserlist()が呼び出され全データを繰り返しループ。-->
<s:iterator value="userlist">
<tr>
<td><s:property value="id" /></td>
<td><s:property value="userid" /></td>
<td><s:property value="passwd" /></td>
<td><s:property value="name" /></td>
<td><s:property value="pref" /></td>
<!-- url変数に、updateUser!input?user.id=「getId()値」 の -->
<!-- URLを格納 -->
<s:url id="url" action="updateUser!input">
<s:param name="user.id" value="id" />
</s:url>
<td><s:a href="%{url}">更新</s:a></td>
<!-- url変数に、deleteUser!confirm?user.id=「getId()値」 の -->
<!-- URLを格納 -->
<s:url id="url" action="deleteUser!confirm">
<s:param name="user.id" value="id" />
</s:url>
<td><s:a href="%{url}">削除</s:a></td>
</tr>
</s:iterator>
</table>
</body>
</html>
(1) <s:property value="userCount" />タグを記述することで、ListUserAction.getUserCount()が
呼び出され、その結果が表示されます。
(2) <s:iterator value="userlist">タグを記述することで、ListUserAction.getUserlist()が呼び出され、
全データを繰り返しループします。
(3) 「更新」リンクを押下すると、「updateUser!input?user.id=[id]」という呼び出しが行われ、
「UpdateUserActionクラスのinput()メソッド」が呼び出されます。
(3) 「削除」リンクを押下すると、「deleteUser!confirm?user.id=[id]」という呼び出しが行われ、
「DeleteUserActionクラスのconfirm()メソッド」が呼び出されます。