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ラボ

サイト検索

Google

Web サイト内

Y!ログール