# リクエスト定義ファイル タグリファレンス

## module [必須]

### 定義　： ファイルの一番外側にひとつだけ定義する。

### 属性　： なし

### 親要素： なし

### 子要素： request, page, resource, template, include

### 定義例：

    <?xml version="1.0" encoding="UTF-8"?>
    <module>

      <page id="p01" class="test.nga.servlet.TestData" />

      <request id="test.r" page="p01"...
      </request>

    </module>

## page

### 定義　：

#### module タグ内部に定義する。複数定義可。request タグの page 属性の値にここで定義した id を指定することにより，ページオブジェクトインスタンスを複数のリクエストで共有できる。

### 属性　：

#### id = ページID [必須]

#### class = ページオブジェクトのクラス [必須]

### 親要素： module

### 子要素： なし

### 定義例：

    <module>

      <page id="p01" class="test.nga.servlet.TestData1" />
      <page id="p02" class="test.nga.servlet.TestData2" />

      <request id="page1-1.r" page="p01" ...
      </request>

      <request id="page1-2.r" page="p01" ...
      </request>

      <request id="page2-1.r" page="p02" ...
      </request>

    </module>

## request

### 定義　： module タグ内部に定義する。複数定義可。

### 属性　：

#### id = リクエストID [必須]

#### controller = コントローラクラス名.メソッド名。省略時はコントローラ呼び出しが行なわれない。コントローラクラス名を省略し，メソッド名のみを記述した場合，このリクエストで処理対象となっているページオブジェクトのメソッドが呼び出される

#### page = ページIDまたはページクラス名

### 親要素： module

### 子要素： parameter, result

### 定義例：

    <module>

      <request
             id="test.r"
             controller="test.nga.servlet.TestController.countup"
             page="test.nga.servlet.TestData">

        <parameter>
        ...
        </parameter>

        <result>
        ...
        </result>

      </request>

    </module>

## parameter

### 定義　： request タグ内部に定義する。

### 属性 [利用者による追加可能]　：

#### parser = ParameterParserクラス名

#### template =テンプレートID。template参照のこと。

### 親要素： request

### 子要素： property

### 定義例：

    <request id="test.r">

      <parameter parser="test.nga.servlet.TestParser">
        <property ... />
        <property ... />
      </parameter>

      ...

    </request>

## property

### 定義　： parameter タグ内部に定義する。

### 属性 [利用者による追加可能]　：

#### name = プロパティ名 [必須]

#### template =テンプレートID。template参照のこと。

#### parser = ( dsp ) PropertyValueParser クラス名

#### required = ( dsp ) 必須入力項目かどうか [ true / false ]

#### label = ( dsp ) ラベル文字列。エラーメッセージ中の項目名等として使用される

#### length = ( dsp : 文字列項目/数値項目 ) 文字列項目の場合は文字数。数値項目の場合は整数部と小数部を合計した桁数（"." は含まない）。

#### bytelength = ( dsp : 文字列項目 ) バイト数。文字列項目に適用される

#### chartype = ( dsp : 文字列項目 ) 文字種。String.matchesの引数に指定可能な正規表現を指定する

#### chartype-comment = ( dsp : 文字列項目 ) 文字種の説明。chartype 属性チェックでエラーが発生した際のエラーメッセージに使用される

#### scale = ( dsp : 数値項目 ) 小数部桁数。数値項目に適用される

#### format = ( dsp : 日時項目 ) 書式文字列。日時項目に適用される

### 親要素： parameter

### 子要素： なし

### 定義例：

      <parameter>
        <property name="code" required="true"
                  chartype="[A-Za-z0-9]*" chartype-comment="英数字"
                  bytelength="3" />
        <property name="date" format="yyyy/MM/dd" />
        <property name="num" length="3" scale="2" />
      </parameter>

## result [必須]

### 定義　： request タグ内部に定義する。

### 属性 [利用者による追加可能]　：

#### writer = ResultWriterクラス名

#### forward = 遷移先リクエストID。forward 指定をした場合，子要素 (target) は無視される。

#### template =テンプレートID。template参照のこと。

#### page = ( dsp ) 結果出力ページ。jsp ファイルのパスを指定する

#### error-page = ( dsp ) エラー発生時に呼び出される結果出力ページ。jsp ファイルのパスを指定する

#### file = ( Downloader ) ダウンロードするファイル名。

#### content-type = ( Downloader ) ダウンロードファイルの content-type。

#### delimiter = ( CSVDownloader ) CSV 出力時の列区切り文字。

#### quote-type = ( CSVDownloader ) 囲みタイプ [ AUTO (必要に応じて文字列に囲み記号をつける) / STRING (文字列には必ず囲み記号をつける) / NO (囲み記号をつけない) ]。デフォルトは NO。

#### target = ( CSVDownloader ) 出力対象プロパティ名。

### 親要素： request

### 子要素： target

### 定義例 (その１)：

    <request id="test.r">

      <result>
        <target value="cd"  id="cd"/>
        <target value="num" id="num" format="#,###"/>
        <target value="date" id="date" format="yyyy/MM/dd"/>
      </result>

    </request>

### 定義例 (その２ - CSV出力)：

    <request id="test.r">

      <result writer="nga.servlet.dsp.writer.CSVDownloader"
              error-page="/jsp/error.jsp"
              file="test1.csv" target="list">
        <target value="cd" label="コード" />
        <target value="list">
          <target value="num" label="No."  />
          <target value="cd"  label="コード"/>
          <target value="date" label="日付" format="yyyy-MM-dd"/>
        </target>
      </result>

    </request>

## target

### 定義　： result タグ内部に定義する。

### 属性 [利用者による追加可能]　：

#### id = 出力先ID (HTMLタグの id 属性)

#### value = 出力対象となる処理結果オブジェクトのプロパティ名

#### include = インクルードする jsp / html のパス

#### template =テンプレートID。template参照のこと。

#### type =属性タイプ。

#### label = ( dsp ) ラベル文字列。

#### format = ( dsp ) 書式文字列。

#### scale = ( dsp ) 小数部桁数。

### 親要素： result

### 子要素： target

### 定義例：

      <result>
        <target id="name" value="name" />
        <target id="code" value="code" />
        <target id="table" value="table" include="jsp/table.jsp" />
      </result>

## resource

### 定義　：

#### module タグ内部に定義する。複数定義可。class 属性で指定したリソースバンドルクラスやプロパティファイルから取得した値を使って，parameter, property, result, target タグの属性値を指定できるようになる。属性値指定は，@[id].[定義名] の形式で行なう。

### 属性　：

#### id = リソースID [必須]

#### class = リソースバンドル基底名 [必須]

#### parent = 親リソースID

### 親要素： module

### 子要素： なし

### 定義例：

    <module>

      <resource id="res" class="test.nga.servlet.resource.Format" />

    ....

      <target value="date" id="date" format="@res.dateformat" />

    </module>

上記例では，クラスパス配下の test/nga/servlet/resource フォルダ中の Format.properties ファイルや Format_ja.properties ファイルに「dateformat=yyyy/MM/dd」という定義がされていることを前提とする。

## template

### 定義　：

#### module タグ内部に定義する。複数定義可。parameter, property, result, target タグに対して付与するデフォルトの属性を指定する。

### 属性　：

#### id = テンプレートID [必須]

#### extends = 親タイプ

### 親要素： module

### 子要素： parameter, property, result, target

### 定義例：

    <module>

      <template id="code">
        <property required="true"
                  chartype="[A-Za-z0-9]*" chartype-comment="英数字"/>
      </template>

      <template id="date">
        <property format="yyyy/MM/dd" />
      </template>

      <parameter>
        <property template="code" name="code1" bytelength="2" />
        <property template="code" name="code2" bytelength="3" />
        <property template="date" name="date1" />
        <property template="date" name="date2" />
      </parameter>

    </module>

上記の定義は，以下の定義と同じ。

    <module>

      <parameter>
        <property name="code1" required="true"
                  chartype="[A-Za-z0-9]*" chartype-comment="英数字"
                  bytelength="2" />
        <property name="code2" required="true"
                  chartype="[A-Za-z0-9]*" chartype-comment="英数字"
                  bytelength="3" />
        <property name="date1" format="yyyy/MM/dd" />
        <property name="date2" format="yyyy/MM/dd" />
      </parameter>

    </module>

ちなみに以下も同じ。

    <module>

      <template id="code">
        <property required="true"
                  chartype="[A-Za-z0-9]*" chartype-comment="英数字"/>
      </template>

      <template id="date">
        <property format="yyyy/MM/dd" />
      </template>

      <parameter>
        <code name="code1" bytelength="2" />
        <code name="code2" bytelength="3" />
        <date name="date1" />
        <date name="date2" />
      </parameter>

    </module>

## include

### 定義　：

#### module タグ内部に定義する。複数定義可。別モジュール（別ディレクトリ）のリクエスト定義ファイルをインクルードする。

### 属性　：

#### module = インクルードするモジュール名 [必須]

### 親要素： module

### 子要素： なし

### 定義例：

    <module>

      <include module="/examples/t13" />

    </module>

TOP