-モデル生成・保持・取得

パラメータバインディング設定は、JSPカスタムタグのパラメータに、背後のモデル層のデータを結び付ける設定です。Mayaが想定する使われ方は、StrutsJSFのフロントエンドとしてMayaを置くことです。しかし、結果としてJSP処理エンジンの代替物に位置づけられる見方から、単体でも用いることも可能です。Hello Mayaサンプルはまさにシンプルな単体利用のサンプルです。単体で用いる場合には、Maya設定XML中に、modelエレメントにて記述します。
<model name="helloModel" class="sample.org.seasar.maya.hellomaya.HelloModel"/>
modelエレメントは、必須の属性としてclass属性とname属性を持ちます。class属性は、データモデルとして用いるPOJOの完全修飾名を指定します。指定するJavaクラスは、デフォルトコンストラクターによって生成できさえすれば何でもかまいません。生成できない場合は、実行例外となります。name属性は生成したモデルに対する参照名です。
modelエレメントは任意属性として、scope属性を持ちます。scope属性の値は、モデルオブジェクトのライフサイクルの設定となります。属性値にとりうる値と、その意味は以下のとおりです。

  • application
    • アプリケーションスコープ/ライフサイクル。ServletContextに保持される
  • session
    • セッションスコープ/ライフサイクル。HttpSessionに保持される
  • request
    • リクエストスコープ/ライフサイクル。HttpServletRequestに保持される

ビジネスロジックとのバインディングは、JSFであればJSFタグの属性値に式言語を書けばJSFタグがバインディングし、StrutsであればStrutsタグの属性値にstruts-configに定義されている識別子を設定すればStrutsタグがバインディングします。また、式言語によって、次に説明する定義済みモデルとバインディングすることもできます。
モデルオブジェクトの検索方法は、まず定義済みモデルに名前が同一のものがあるかを探します。見つからない場合には、requestスコープ、sessionスコープ、applicationスコープの順に検索します。