配列やコレクションの繰り返し処理をするには、<logic:iterate>タグを使用します。
<html:iterater>タグの主要属性
属性 | 概要 |
id | JSP内で使用する変数名を指定します。 |
collection | スクリプトレットで指定された値を指定します。 |
name | スコープに登録されているBean名を指定します |
property | 出力対象のBeanのプロパティを指定します。 |
scope | name属性で指定したオブジェクトを取り出すscopeを指定します。指定しない場合、pege、request、session、spplicationの順で検索します。 |
indexId | 現在のindex番号を格納する変数を指定します。 |
length | 最大の繰り返し数を指定します。※1 |
offset | 繰り返し処理を開始するindex番号を指定します。省略時はゼロ※1 |
※1 最大繰り返し数と開始index番号の指定の実装例はこちらを参照して下さい。
例1)JSP内でスクリプトレットで生成した配列を出力する
<%@ page pageEncoding = "Shift_JIS" %> <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <% String[] strArray = {"str1","str2","str3"}; %> <html><body> ●JSP内で生成したString型の配列を表示する。<br> <logic:iterate id="data" collection="<%= strArray %>" indexId="idx" > <bean:write name="idx" /> : <bean:write name="data" /> <br> </logic:iterate> </logic:iterate> <hr> </body></html> |
String配列が、スクリプトレットで指定されているので、collection属性を使用している。
インデックス番号を表す変数に"idx"を指定している。
画面イメージ
スポンサード リンク
例2)セッションに格納された配列、List、Mapオブジェクトを出力する
<%@ page pageEncoding = "Shift_JIS" %> <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <html><body> ●String型の配列を表示する<br> <logic:iterate id="data" name="strData" > <bean:write name="data" /> <br> </logic:iterate> <hr> ●List型の配列を表示する<br> <logic:iterate id="data" name="listData" > <bean:write name="data" /> <br> </logic:iterate> <hr> ●Map型のKeyとvalueをそれぞれ表示する<br> <logic:iterate id="data" name="mapData" > <bean:write name="data" property="key" /> : <bean:write name="data" property="value" /> <br> </logic:iterate> </body></html> |
配列、コレクションが直接セッションに格納してあるので、property属性は指定していない。
Map、<bean:write>タグのproperty属性に、key、valueを指定することでそれぞれ、keyと値が出力される。
画面イメージ
配列、コレクションのセッション格納処理抜粋(アクションクラス)
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // 配列データをセッションに登録 String[] str = {"str1","str2","str3"}; request.setAttribute("strData", str); // Listデータをセッションに登録 List<String> list = new ArrayList<String>(); list.add("list1"); list.add("list2"); list.add("list3"); request.setAttribute("listData", list); // Mapデータをセッションに登録 Map<String,String> map = new LinkedHashMap<String,String>(); map.put("key1", "map1"); map.put("key2", "map2"); map.put("key3", "map3"); request.setAttribute("mapData", map); return mapping.findForward("success"); } |
例3)セッションに格納された、Baen内の配列、List、Mapオブジェクトを出力する
<%@ page pageEncoding = "Shift_JIS" %> <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <html><body> ●Bean内のString型の配列を表示する<br> <logic:iterate id="data" name="IterateForm" property="stringForm" > <bean:write name="data" /> <br> </logic:iterate> <hr> ●Bean内のList型の配列を表示する<br> <logic:iterate id="data" name="IterateForm" property="listForm" > <bean:write name="data" /> <br> </logic:iterate> <hr> ●Bean内のMap型のKeyとvalueをそれぞれ表示する<br> <logic:iterate id="data" name="IterateForm" property="mapForm" > <bean:write name="data" property="key" /> : <bean:write name="data" property="value" /> <br> </logic:iterate> </body></html> |
配列、コレクションが直接セッションに格納してあるので、property属性は指定していない。
Map、<bean:write>タグのproperty属性に、key、valueを指定することでそれぞれ、keyと値が出力される。
画面イメージ
Beanのセッション格納処理抜粋(アクションクラス)
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // 配列データを登録 String[] str = {"str1","str2","str3"}; // Listデータを登録 List<String> list = new ArrayList<String>(); list.add("list1"); list.add("list2"); list.add("list3"); // Mapデータを登録 Map<String,String> map = new LinkedHashMap<String,String>(); map.put("key1", "map1"); map.put("key2", "map2"); map.put("key3", "map3"); // 配列、コレクションデータをアクションフォームに設定 DynaActionForm inform = (DynaActionForm)form; inform.set("mapForm", map); inform.set("listForm", list); inform.set("stringForm",str); return mapping.findForward("success"); } |