Strutsリファレンス(逆引き)

Strutsリファレンス
 
Web struts.wasureppoi.com
配列やコレクションの繰り返し処理をする<logic:iterate>
スポンサード リンク

配列やコレクションの繰り返し処理をするには、<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");
}



スポンサード リンク


logicタグの種類
配列やコレクションの繰り返し処理をする<logic:iterate>
配列やコレクションの繰り返し処理の条件を指定する<logic:iterate>
大小の比較をする<logic:equals、greaterThan、lessThan>など
NULLまたは空の判定をする<logic:empty、notEmpty>
指定した文字列が含まれるか判定する<logic:match、notMatch>
プロパティの存在チェックをする<logic:present、notPresent>
メッセージ、エラーメッセージの存在チェックをする<logic:messagesPresent、messagesNotPresent>
指定したURLにフォワードする<logic:forward>
指定したURLにリダイレクトする<logic:redirect>

カスタムタグへ
忘れっぽいエンジニアのJakarta Strutsリファレンス TOPへ