## 設定ファイルリファレンス

### フィーチャーの配置設定ファイル (feat-config.xml)

#### feat要素 - 全体の設定

ネスト可能な要素

> feature

属性

> なし

#### feature要素 - フィーチャーの配置

ネスト可能な要素

> なし

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
config | 必須 |  | フィーチャー設定ファイルのファイル名です。ディレクトリは指定できません。フィーチャー設定ファイルはfeat-config.xmlと同じディレクトリに配置する必要があります。
template-path | 必須 |  | フィーチャー内で使用するテンプレートファイルのディレクトリです。一つのフィーチャーにつき一つ指定できます。アプリケーションのコンテキストルートからの相対パスで指定します。'/'や'.'で始まるパスは指定できません。

### 各フィーチャーの設定ファイル

各フィーチャーはfeat-config.xmlのfeature要素で指定したファイルで設定します。

#### feature要素 - フィーチャーの定義

ネスト可能な要素

> pre-process, command, view, page, data, forward, redirect, resources, exception

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
name | 必須 |  | フィーチャーの名前。 名前を"login"を設定した場合HTTPリクエストURIは http://ドメイン名/アプリケーション名/login/コマンド名.接尾辞 となります。
home | 任意 | null | コマンドが指定されなかったときにデフォルトで表示されるページ。フィーチャー内のpage要素のname属性の値を指定します。
package | 必須 |  | このFeature内のクラスのデフォルトパッケージ。
encoding | 任意 | null | コマンドに送られるHTTPリクエストの文字エンコーディング。command要素でencoding属性が指定されなかったときの既定値となります。 値はJavaで使用できるエンコーディング名で指定します。 この属性とcommand要素のencoding属性の両方の指定を省略したときはHttpServletRequestのsetCharacterEncodingは実行されません。
create-session | 任意 | false | trueにするとセッションが必要になったときに自動的にセッションを開始します。falseにするとセッションを開始しようとしたときにHTTPSessionExceptionがスローされます。 このフィーチャーの外でセッションが開始される場合、この属性は影響しません。

#### pre-process要素 - コマンドの事前処理の定義

ネスト可能な要素

> なし

コマンドの実行前の処理を定義します。

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
name | 必須 |  | プリプロセスの名前。
class | 必須 |  | プリプロセスクラスの名前。
continue | 任意 | false | プリプロセスでエラーが発生したときに引き続きプリプロセスやコマンドの実行を続けるかどうかのフラグ。trueの時はエラーがあっても次のプリプロセスまたはコマンドを続行します。

#### command要素 - コマンドの定義

ネスト可能な要素

> なし

このFeatureのコマンドの定義。

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
name | 必須 |  | コマンドの名前。
error-page | 任意 | null | プリプロセスでエラーが発生してコマンドが実行されなかったときの遷移先ページ。既定値はfeature要素のhome属性の値です。 すべてのプリプロセスのcontinue属性がtrueの場合は遷移しません。
class | 必須 |  | コマンドクラスの名前。リクエストパラメータはコマンドオブジェクトに格納され、コマンドはコマンドオブジェクトのexecuteメソッドの呼び出しで実行されます。コマンドオブジェクトはリクエストごとに作成されます。
encoding | 任意 | null | コマンドに送られるリクエストの文字エンコーディング。値はJavaで使用できるエンコーディング名で指定します。 指定しなかったときはfearure要素のencoding属性の値が参照されます。
pre-process | 任意 | null | 定義済みのプリプロセスのリスト。下の形式で指定します。 プリプロセス名(引数, ... ), ... プリプロセスは','で区切って複数指定でき、リストの順に実行されます。引数は括弧ごと省略可能で、','で区切って複数指定できます。引数は引用符などで囲む必要はなく、カンマと括弧は引数の値に含むことはできません。また、それぞれの値の前後の空白は削除されます。 引数はPreProcess#examineメソッドの2番目の引数に配列として渡されます。
response | 必須 |  | レスポンスのマッピング。下の形式で指定します。 ローカル名 = フィーチャー名::レスポンス名, ... マッピングの定義は','で区切って複数指定できます。 ローカル名はCommand#executeメソッドから返される文字列です。 フィーチャー名を指定することで、コマンドとは別のフィーチャーのレスポンスを返すことができます。"::"ごと省略可能で、省略時はこのコマンドと同じフィーチャーを指定したことになります。 レスポンス名はpage要素, data要素, forward要素, redirect要素のname属性で指定した名前です。レスポンス名に「#home」を指定するとフィーチャーのホームページを指定したことになります。

#### view要素 - ビューの定義

ネスト可能な要素

> なし

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
name | 必須 |  | ビューの名前。
class | 必須 |  | ビューのクラス。Viewインタフェースを実装している必要があります。

#### page要素 - ページの定義

ネスト可能な要素

> なし

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
name | 必須 |  | ページレスポンスの名前。
template | 必須 |  | テンプレートとなるHTMLファイル名。feat-config.xmlで指定したパスからの相対パスで指定しますが、上位ディレクトリは指定できません。
view | 任意 複数可 | null | このページに含まれるビュー。','で区切って複数記述できます。 "feature::view"の形式で他のフィーチャーのビューを指定できます。何も指定しないか、属性を省略するとテンプレートで指定したHTMLがそのまま表示されます。

#### data要素 - HTML以外のレスポンスの定義

ネスト可能な要素

> なし

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
name | 必須 |  | データレスポンスの名前。
class | 必須 |  | レスポンスを処理するクラスの名前。Responseインタフェースを実装している必要があります。

#### forward要素 - レスポンスのフォワードの定義

ネスト可能な要素

> なし

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
name | 必須 |  | フォワードレスポンスの名前。
path | 必須 |  | フォーワード先のパス。'/'ではじめる必要があります。アプリケーションのルートを"/"とした相対パスで指定します。これはServletContext#getRequestDispatcherメソッドで実現されるので、このメソッドの仕様に依存しています。

#### redirect要素 - リダイレクトの定義

ネスト可能な要素

> なし

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
name | 必須 |  | リダイレクトレスポンスの名前。
uri | 必須 |  | リダイレクト先のURI。相対パスも指定できます。HttpServletRequest#sendRedirectメソッドの仕様に依存します。

#### resources要素 - リソースの定義

ネスト可能な要素

> resource

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
lang | 任意 | null | リソースの言語。言語、国名、バリアントを下線"_"で区切った文字列です。属性を省略した場合はすべてのロケールに適合するリソースとなります。言語のみ、"言語_国名"でも有効ですが、"_国名"、"言語__バリアント"のような形式は指定できません。

#### resource要素

ネスト可能な要素

> なし

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
lang | 任意 | null | リソースの言語。resources要素のlang属性を上書きします。省略したときはresources要素のlang属性が適用されますが、言語指定が一切ないリソースは、すべての言語に適合するリソースとなります。 同一の名前のリソースでも言語ごとに設定できます。 リソースの検索は現在のロケールにもっとも多くの項目が一致するリソースが選択されます。 ロケールが"ja_JP"のとき、リソースは "ja_JP", "ja", デフォルトの順に検索されます。

#### exception要素

ネスト可能な要素

> なし

属性

属性名 | 必要性 | 省略値 | 説明
--- | --- | --- | ---
type | 必須 |  | 処理する例外のクラス名。try〜catchステートメントと同様、このクラスとサブクラスの例外オブジェクトを処理する。 例外が複数のexception要素に該当するときは先に記述されたexception要素で例外が処理される。
response | 必須 |  | typeに該当する例外が起きたときのレスポンス。下の2つの形式のどちらかで記述する。 フィーチャー名::レスポンス名 レスポンス名 遷移先ページの処理中に例外が起きたときは例外ハンドラに処理を委譲せず、ServletExceptionとしてサーブレットの例外として扱う。
log | 任意 | ログ出力なし | 例外をログに出力するときのレベル。指定できる値は"fatal", "error", "warn", "info", "debug", "trace"。省略すると、この例外はログに出力されない。
log-message | 任意 | ログメッセージなし | 例外をログに出力するときのメッセージ。リソース名で指定する。リソースはexception要素と同じフィーチャーのものが参照される。省略すると例外のスタックトレースだけが出力される。

クラスの指定 クラス名は属性値で指定された名前で検索して見つからないときは、feature要素のpackage属性の値で指定されたパッケージに属するものと仮定して検索されます。単純に文字列の連結で完全修飾名を作るので package="abc" class="def.MyClass" と指定したときはabc.def.MyClassが完全修飾名となります。

$Id: config.html,v 1.4 2005/05/23 03:10:07 sugimotokenichi Exp $