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