Apache Struts - データの受け渡し(2) 繰り返し項目を渡すAdvertisement繰り返し項目を渡す
ActionクラスからJSPへデータを渡し、テーブルやリストなどで繰り返し表示を行いたい場合、List(または配列)とlogic:iterateを利用すると手軽に実現することができます。
データの数だけ自動的に繰り返し表示を行ってくれるので、条件判定やロジックをJSPに記述する必要がありません。 サンプルコード
Bean(TestBean.java)
import java.io.Serializable;
public class TestBean implements Serializable{
private String name;
public TestBean(){
}
/**
* @return name を戻します。
*/
public String getName() {
return name;
}
/**
* @param name
* name を設定。
*/
public void setName(String name) {
this.name = name;
}
}
プロパティnameと、それに対するsetter/getterメソッドを定義しています。Actionクラス(TestAction.java)
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import struts.bean.TestBean;
public class TestAction extends Action {
public ActionForward execute(ActionMapping map, ActionForm frm,
HttpServletRequest request, HttpServletResponse response) {
ArrayList iterateList = new ArrayList();
TestBean taro = new TestBean();
taro.setName("Taro");
iterateList.add(taro);
TestBean jiro = new TestBean();
jiro.setName("Jiro");
iterateList.add(jiro);
request.setAttribute("iterate", iterateList);
return map.findForward("success");
}
}
複数のBeanをリストに格納してリクエストに設定しています。
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<html:html locale="true">
<head>
<title>result</title>
</head>
<body>
<logic:iterate id="testName" name="iterate">
<bean:write name="testName" property="name"/><br>
</logic:iterate>
</body>
</html:html>
logic:iterateカスタムタグでリストの中のBeanに対して繰り返し処理を行っています。logic:iterateタグのid属性は、ループに対して任意の名称を設定しています。bean:writeタグでその名称を指定して、値を参照します。これでループ内のループにも対応することが可能となっています。 logic:iterateタグのname属性で、リクエストに設定したキーを指定してリストを取得します。リストの要素数で自動的に繰り返し処理が実行されます。 Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |