目次へ

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タグを用いて、それらのインスタンスを変数として定義する事。またその値を表示する事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp