Struts 3章 Beanタグライブラリ
- 3.1. Beanタグライブラリとは
- 3.2. defineタグ
- 3.3. parameterタグ/cookieタグ/headerタグ
3.2. defineタグ
ここからは、Beanタグライブラリの中で有用なタグについて説明していきます。
最初は「define」タグです。defineタグは特定のスコープに登録されているJavaBeansのプロパティを読み取り、新しい変数として定義するタグです。例えば以下のBeanが「sampleBean」という名前でsessionスコープに登録されているとします。
import java.util.*; public class SampleBean{ public double getDouble(){ return(3.1415); } public SampleBean getBean(){ return(new SampleBean()); } public int[] getArrays(){ int[] arrays={1,2,3}; return(arrays); } public Map getMap(){ Map map=new HashMap(); map.put("key1","value1"); map.put("key2","value2"); return(map); } }
この時、以下のようにdefineタグを記述すると、sampleBeanのdoubleという値が取り出され、「sampleBean_double」という名前の変数が新たに定義されます。また指定のスコープにidの名前で登録されます。
<bean:define id="sampleBean_double" name="SampleBean" property="double" /> <%=sampleBean_double %>
以下はdefineタグの属性一覧です。
属性名 | 必須 | スクリプト 可能 |
説明 |
---|---|---|---|
id | ○ | 新しい変数名。指定のスコープに登録する際の名前にもなる。 | |
toScope | ○ | プロパティを登録するスコープ。指定されない場合は、pageスコープに登録される。 | |
name | ○ |
Beanの名前。 |
|
property | ○ | Beanのプロパティ名。Beanが基本データ型のラッパークラスである場合には、省略可能。 | |
scope | ○ | Beanを検索するスコープ。指定されない場合は、pageスコープから順に検索される。 | |
value | ○ | nameおよびproperty属性が指定されない場合に、この属性の値で指定のスコープに値を登録する。登録する際の型はjava.lang.Stringになる。 |
value属性の使用法は以下の通りで、この場合、「sampleString」の値は「こんばんは」になります。
<bean:define id="sampleString" value="こんばんは" /> <%=sampleString %>
またdefineタグはBeanの中のBeanにもアクセス可能です。
<bean:define id="sampleBean_bean_double" name="sampleBean" property="bean.double" /> <%=sampleBean_bean_double %>
上記の場合は、SampleBean内のSampleBeanのdoubleプロパティにアクセスしています。
配列やリスト・マップのプロパティにもアクセス可能です。
<bean:define id="sampleBean_array1" name="sampleBean" property="arrays[0]" /> <%=sampleBean_array1 %> <bean:define id="sampleBean_mapKey1" name="sampleBean" property="map.key1" /> <%=sampleBean_mapKey1 %>
配列やリストの場合には
プロパティ名[インデックス]
の形式で、マップの場合には
プロパティ名.キー
の形式で指定します。
JavaBeansが基本データ型のラッパークラスである場合には、property属性を省略します。
<% pageContext.setAttribute("sampleInteger",new Integer(5)); %> <bean:define id="sampleInt" name="sampleInteger" /> <%=sampleInt %>
(実習課題1)
以下のWebアプリケーションを、Strutsを用いて作成しなさい。
- 以下のプロパティを持っているJavaBeansクラスを作成する事。
- int型の値
- Stringの配列
- java.util.List
- java.util.Map
- defineタグを用いて、上記クラスのインスタンスのプロパティを変数として定義する事。またその値を表示する事。
(実習課題2)
以下のWebアプリケーションを、Strutsを用いて作成しなさい。
- pageContextに複数の基本データ型インスタンスを登録する事。
- defineタグを用いて、それらのインスタンスを変数として定義する事。またその値を表示する事。