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

アプリケーション設定ファイル (feat-config.xml)

feat
feature

フィーチャー設定ファイル

feature
command
bean
effect
fetch
output
mapping
page
view
data
file
forward
redirect
intercept
exception
input
input-literal
input-param
input-resource
validation

各設定ファイルで共通の要素

resources
resource

## アプリケーション設定ファイル (feat-config.xml)

### feat

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
use-body-endocing-for-uri | boolean | 任意 | false | trueに設定するとリクエストURIのクエリーにエンコーディングの設定(フィーチャー設定ファイルのfeature要素, command要素)を適用します。
http-port | int | 任意 | なし | このアプリケーションのhttpスキームのアクセスに使われるポートです。http/httpsの自動切換えのURIを生成する際に使用されます。
https-port | int | 任意 | なし | このアプリケーションのhttpsスキームのアクセスに使われるポートです。http/httpsの自動切換えのURIを生成する際に使用されます。

ネスト可能な要素

feature, resources

### feature

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

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

### feature

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | このフィーチャーの名前です。リクエストのディスパッチなどで参照されます。
create-session | boolean | 任意 | false | コマンドのcreate-session属性の共通の設定です。command要素でcreate-session属性が設定されていないときはこの値が参照されます。
encoding | String | 任意 | なし | コマンドのencoding属性の共通の設定です。command要素でencoding属性が設定されていないときはこの値が参照されます。
package | String | 任意 | なし | フィーチャー内に出現するJavaクラスのパッケージ名です。

ネスト可能な要素

command, page, data, file, forward, redirect, exception, intercept, resources

### command

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | コマンドの名前です。リクエストのディスパッチなどで参照されます。
create-session | boolean | 任意 | false | trueを設定すると、featがセッション属性を更新しようとしたときにセッションを自動的に作成します。falseを設定するとfeatがセッション属性を更新しようとしたときにHttpSessionExceptionが投げられます。この設定は既に作られたセッションに対しては何の影響も及ぼしません。また、アプリケーションのコードがセッションを作成する場合にも影響しません。featがセッションオブジェクトを作成しようとするのは、beanを出力するときとoutput要素で指定された値を保存するときだけです。
encoding | String | 任意 | fearure要素のencoding属性の値 | リクエストパラメータのエンコーディングを指定します。指定できる値はJavaで使用できるエンコーディング名です。指定しなかったときはfearure要素のencoding属性の値が参照されます。
scheme | String | 任意 | なし | http/httpsの自動リダイレクトを指定します。この値をhttpまたはhttpsに設定すると、設定と違うスキームでアクセスされたときに指定のスキームのURIに自動的にリダイレクトします。http/httpsの自動リダイレクトはGETメソッド、POSTメソッドの両方で実行されます。

ネスト可能な要素

bean, effect, fetch, exception, output

### bean

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | Beanアクションの名前です。
class | String | 必須 |  | 作成するオブジェクトのクラスです。引数なしのコンストラクタを持っているクラスならどのようなクラスでも指定できます。
scope | String | 任意 | local | Beanを作成するスコープです。"local", "request", "session", "application"のいずれかの値をとります。指定のスコープにname属性で指定した名前のインスタンスが既に存在するときはそのオブジェクトを返します。その際、class属性で指定したクラスのインスタンスかどうかはチェックしません。
error-response | boolean | validationを定義するときは必須 | なし | バリデーションエラーがあるときに遷移するレスポンス・コンポーネントの名前です。

ネスト可能な要素

input, input-param, input-literal, input-resource, validation

### effect

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | Effectアクションの名前です。アクションの出力はこの名前でローカルスコープの属性にセットされます。
class | String | 必須 |  | Effectアクションのクラスを指定します。feat2.Effectorインターフェイスを実装している必要があります。
error-response | boolean | validationを定義するときは必須 | なし | バリデーションエラーがあるときに遷移するレスポンス・コンポーネントの名前です。

ネスト可能な要素

input, input-param, input-literal, input-resource, validation

### fetch

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | Fetchアクションの名前です。アクションの出力はこの名前でローカルスコープの属性にセットされます。
class | String | 必須 |  | Fetchアクションのクラスを指定します。feat2.Fetcherインターフェイスを実装している必要があります。
cache | long | 任意 | 0 | Fetchアクションの結果をキャッシュする時間をミリ秒単位で指定します。0以下の数値を設定するとキャッシュされません。
error-response | boolean | validationを定義するときは必須 | なし | バリデーションエラーがあるときに遷移するレスポンス・コンポーネントの名前です。

ネスト可能な要素

input, input-param, input-literal, input-resource, validation

### output

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | この出力設定の名前です。"default"を設定すると、CommandContextのoutputNameプロパティに何も設定しなかったときのデフォルトの出力になります。
response | String | 必須 |  | 遷移先のレスポンス名です。
output-objects | String | 必須 |  | ローカルスコープからscope属性で指定したスコープに出力するオブジェクト名を空白区切りのリストで指定します。出力先には同名でセットされます。出力先で名前を変更したいときはここで指定せずにmapping要素で個別に指定してください。
scope | String | 任意 | request | 出力先のスコープです。"request", "session", "application"のいずれかの値をとります。

ネスト可能な要素

mapping

### mapping

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
local-name | String | 必須 |  | 出力するローカルスコープのオブジェクトの名前です。
output-name | String | 必須 |  | 出力先のスコープにセットするときのオブジェクトの名前です。
scope | String | 任意 | output要素のscope属性の値 | 出力先のスコープです。"request", "session", "application"のいずれかの値をとります。output要素のscope属性の値よりも優先されます。

### page

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | ページレスポンスの名前です。
template | String | 必須 |  | テンプレートとなるHTMLファイル名。feat-config.xmlのfeature要素で指定したパスからの相対パスで指定しますが、上位ディレクトリは指定できません。
max-age | int | 任意 | なし | ページの有効期間を秒単位で指定します。0より大きい値を設定すると、ExpiresヘッダとCache-Controlヘッダで有効期間を返します。0を設定するとHTTPレスポンスのヘッダとHTMLのMETA要素でPragma, Cache-Controlを"no-cache"に設定します。指定を省略するとこれらのレスポンスヘッダを出力しません。

ネスト可能な要素

view

### view

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
class | String | 必須 |  | ビューコンポーネントのクラス名です。
error-response | String | validationを定義するときは必須 | なし | バリデーションエラーがあるときに遷移するレスポンス・コンポーネントの名前です。

ネスト可能な要素

input, input-param, input-literal, input-resource, validation

### data

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | データレスポンスの名前です。
class | String | 必須 |  | レスポンスを処理するクラスの名前。feat2.Dataインタフェースを実装している必要があります。
error-response | String | validationを定義するときは必須 | なし | バリデーションエラーがあるときに遷移するレスポンス・コンポーネントの名前です。

ネスト可能な要素

input, input-param, input-literal, input-resource, validation

### file

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | ファイルレスポンスの名前です。
class | String | 必須 |  | ファイル内容を出力するクラス名です。
filename | String | 任意 | なし | クライアントに返すファイルの名前です。class属性のクラスがファイル名を返す場合はそれを優先します。ユーザエージェントがWindows IE、Firefox、Mozillaの場合は日本語のファイル名を設定できますが、それ以外のユーザエージェントでは日本語のファイル名を正しく処理できません。
content-type | String | 任意 | なし | レスポンスヘッダのcontent-typeの内容です。class属性のクラスがmimeTypeを返す場合はそれを優先します。
error-response | String | validationを定義するときは必須 | なし | バリデーションエラーがあるときに遷移するレスポンス・コンポーネントの名前です。

ネスト可能な要素

input, input-param, input-literal, input-resource, validation

### forward

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

### redirect

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | リダイレクトレスポンスの名前です。
uri | String | 必須 |  | リダイレクト先のURIです。相対パスも指定できます。HttpServletRequest#sendRedirectメソッドの仕様に依存します。
method | String | 任意 | get | リダイレクト時に使用されるHTTPメソッドです。getを指定するとリダイレクトを促すHTTPヘッダを出力します。postを指定すると、HTMLのフォームとそれをサブミットするJavaScriptが出力されます。

ネスト可能な要素

input, input-param, input-literal, input-resource

### intercept

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
class |  | 必須 |  |
pattern |  | 必須 |  |

### exception

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
catch | String | 必須 |  | キャッチする例外クラスです。Javaの例外機構のようにこのクラスとサブクラスの例外をキャッチします。exception要素を複数書いた場合、cache構文のように先に書いたexception要素のcache属性から順に比較します。
response | String | 必須 |  | 例外をキャッチしたときに遷移する先のレスポンス名です。

### input

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
property | String | 必須 |  | 値をセットする対象となるプロパティ名です。
scope | String | 任意 |  | 参照する値のスコープです。"local", "request", "session", "application"のいずれかの値をとります。
ref | String | 任意 | property属性と同じ値 | 参照する値の名前です。
required | boolean | 任意 | false | trueを設定すると、値がnullまたは空文字列だった場合にバリデーションエラーになります。
display-name | String | 任意 | なし | このプロパティの表示名をリソース名で指定します。ここで設定して値はバリデータの標準エラーメッセージで使用されます。省略した場合、エラーメッセージにはプロパティ名が表示されます。

### input-literal

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
property | String | 必須 |  | 値をセットする対象となるプロパティ名です。
required | boolean | 任意 | false | trueを設定すると、値がnullまたは空文字列だった場合にバリデーションエラーになります。
display-name | String | 任意 | なし | このプロパティの表示名をリソース名で指定します。ここで設定して値はバリデータの標準エラーメッセージで使用されます。省略した場合、エラーメッセージにはプロパティ名が表示されます。

ネスト可能な要素

テキスト

### input-param

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
property | String | 必須 |  | 値をセットする対象となるプロパティ名です。
ref | String | 任意 | property属性と同じ値 | 参照するリクエストパラメータ名です。
required | boolean | 任意 | false | trueを設定すると、値がnullまたは空文字列だった場合にバリデーションエラーになります。
display-name | String | 任意 | なし | このプロパティの表示名をリソース名で指定します。ここで設定した値はバリデータのエラーメッセージで使用されます。省略した場合、エラーメッセージにはプロパティ名が表示されます。

### input-resource

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
property | String | 必須 |  | 値をセットする対象となるプロパティ名です。
ref | String | 任意 | property属性と同じ値 | 参照するリソースの名前です。
required | boolean | 任意 | false | trueを設定すると、値がnullまたは空文字列だった場合にバリデーションエラーになります。
display-name | String | 任意 | なし | このプロパティの表示名をリソース名で指定します。ここで設定して値はバリデータの標準エラーメッセージで使用されます。省略した場合、エラーメッセージにはプロパティ名が表示されます。

### validation

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | バリデーションの名前です。ほかのvalidationのdepends属性で参照するときに使われます。
properties | String | 必須 |  | 検証するプロパティ名を空白区切りのリストで指定します。
type | String | 必須 |  | バリデータのタイプです。指定できるバリデータは以下の通りです。
バリデータタイプ | 説明 | 標準エラーメッセージID
--- | --- | ---
byte | 値がbyte型かどうか調べます | error.validation.byte
short | 値がshort型かどうか調べます | error.validation.short
int | 値がint型かどうか調べます | error.validation.int
long | 値がlong型かどうか調べます | error.validation.long
float | 値がfloat型かどうか調べます | error.validation.float
double | 値がdouble型かどうか調べます | error.validation.double
string | 指定の文字列形式であることを検証します | error.validation.string
required | nullまたは空文字でないことを検証します | error.validation.required
range | 値が指定された範囲の数値であることを検証します | error.validation.minrange (下限だけが制限されているとき) error.validation.maxrange (上限だけが制限されているとき) error.validation.range (上限、下限が制限されているとき)
length | 値が指定された範囲の長さの文字列であることを検証します | error.validation.minlength (下限だけが制限されているとき) error.validation.maxlength (上限だけが制限されているとき) error.validation.length (上限、下限が制限されているとき)
date | 値が正しい日付であることを検証します | error.validation.date
simple-date | 値が指定された形式の日付であることを検証します | error.validation.simpledate
mail-address | 値が正しいメールアドレスの形式かどうか調べます | error.validation.mailaddress
postal-code | 値が正しい郵便番号の形式であることを検証します | error.validation.postalcode
credit-card | 値が正しいクレジットカードの形式であることを検証します | error.validation.creditcard
filetype | アップロードされたファイルの名前が指定の拡張子かどうか調べます | error.validation.filetype (ファイルタイプの指定が一つのとき) error.validation.filetypes (複数のファイルタイプが指定されているとき)
class | class属性で指定したバリデータで値を検証します |
class | String | type属性がclassの時は必須 | なし | type属性が"class"のとき、検証を行うバリデータクラスを指定します。
depends | String | 任意 | なし | ほかのバリデータでエラーがなかったときだけ検証を行いたい場合に指定します。バリデータ名を空白区切りで記述します。ほかのオブジェクトのバリデータを指定することはできません。
message | String | 任意 | バリデータの標準エラーメッセージ | バリデーションエラーのメッセージです。リソースIDで指定します。省略したときはバリデータの標準メッセージとなります。この標準メッセージはリソースを定義することで上書きできます。

ネスト可能な要素

input, input-param, input-literal, input-resource

## 各設定ファイルで共通の要素

### resources

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
lang | String | 任意 | なし | この要素の下のresource要素でlang属性を省略したときに参照される言語名です。ja_JPのようにJavaのロケールの形式で記述します。

ネスト可能な要素

resoure

### resource

属性名 | 型 | 必要性 | 省略値 | 説明
--- | --- | --- | --- | ---
name | String | 必須 |  | リソース名です。
lang | String | 任意 | resources要素で指定した値 | このリソースの言語です。ja_JPのようにJavaのロケールの形式で記述します。

ネスト可能な要素

テキスト

$Id: reference.html,v 1.5 2006/06/13 09:36:01 sugimotokenichi Exp $