配列やコレクションの繰り返し処理をする

 配列やコレクションの繰り返し処理をするには、タグを使用します。

タグの主要属性
属性 概要
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"};
%>

●JSP内で生成したString型の配列を表示する。

collection="<%= strArray %>" indexId="idx" >
    : 






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" %>

●String型の配列を表示する


  





●List型の配列を表示する


  





●Map型のKeyとvalueをそれぞれ表示する


  
    : 
  



配列、コレクションが直接セッションに格納してあるので、property属性は指定していない。
Map、タグの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 list = new ArrayList();
  list.add("list1");
  list.add("list2");
  list.add("list3");
  request.setAttribute("listData", list);

  // Mapデータをセッションに登録
  Map map = new   LinkedHashMap(); 
  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" %>

●Bean内のString型の配列を表示する


  



●Bean内のList型の配列を表示する


  



●Bean内のMap型のKeyとvalueをそれぞれ表示する


  
     : 
  



配列、コレクションが直接セッションに格納してあるので、property属性は指定していない。
Map、タグのproperty属性に、key、valueを指定することでそれぞれ、keyと値が出力される。

画面イメージ




Beanのセッション格納処理抜粋(アクションクラス)

public ActionForward execute(ActionMapping mapping,
                   ActionForm form,
                   HttpServletRequest request,
                   HttpServletResponse response) {

   // 配列データを登録
  String[] str = {"str1","str2","str3"};

   // Listデータを登録
  List list = new ArrayList();
  list.add("list1");
  list.add("list2");
  list.add("list3");

  // Mapデータを登録
  Map map = new   LinkedHashMap(); 
  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");
}



你可能感兴趣的:(Struts)