# feat

| ## News ### 2006/5/18 - 2.0-beta-2006_0518 リリース Beanやアクションの出力に新しいスコープ"local"を追加 コマンドの出力先スコープを選択できるようにした forwardで無限ループするバグを修正 リダイレクトで複数の値を持つパラメータが正常に受け渡せないバグを修正 Form API: 名前を共有するチェックボックスに正しく値が入らないバグの修正 Form API: select要素のmultiple属性を無視していたバグを修正 Form API: テキストエリアに値が入らないバグの修正 http/httpsの自動切り替えを実装 fetchのキャッシュを実装 shift_jis, windows-31j間の変換で文字化けしないようにした レスポンスのCache-Controlヘッダをコントロールする機能を追加 ファイルのダウンロードをサポート ### 2006/4/26 - 2.0-alpha-2006_0426 リリース 2.0の新機能 コマンドをアクションコンポーネントのチェーンで構成できるようにした 各コンポーネントへの値の入力にDIを採用し、コンポーネント間の依存性を低くした バリデーションの仕組みの導入 ファイルアップロードを簡単に扱えるようにした その他の変更 設定ファイルをロードするためのライブラリをJiBXからDigesterに戻した DigesterのルールをXMLで定義した ### 2006/2/7 - 1.0-alpha-2006_0207 リリース ドキュメントを更新 Form API: INPUTボタンとBUTTON要素のタイプを分けた build.xml: リリースファイルにjarが含まれないバグを修正 テンプレートAPI要素ノード: 存在しない属性を削除したときにNullPointerExceptionが発生しないように修正 テンプレートAPI要素ノード: 属性を持たない要素に属性を追加したときにタグ名のあとにスペースが入らないバグを修正 ## feat featはwebアプリケーションのためのフレームワークです。XMLでプログラミングしたり、HTMLに難解な記述を混入させてデザインの修正を妨げたりすることはありません。 HelloWorldの例です。この程度の単純なものならアクションコンポーネントを省略してしまうこともできます。 アプリケーションの設定ファイル (feat-config.xml)
    <?xml version="1.0" ?>
    <!DOCTYPE feat PUBLIC "-//feat//DTD feat-config//EN" "feat-config.dtd">

    <feat>
        <feature config="examples.xml" template="WEB-INF/templates/examples/" />
    </feat>
フィーチャーの設定ファイル (examples.xml)
    <?xml version="1.0" ?>
    <!DOCTYPE feature PUBLIC "-//feat//DTD feature-config//EN" "feature-config.dtd">

    <feature name="examples" package="examples">
        <command name="hello">
            <!-- アクションコンポーネントを省略 -->
            <output name="default" response="helloView" />
        </command>

        <page name="helloView" template="hello.html">
            <view class="MessageView">
                <input-literal property="message">こんにちは</input-literal>
            </view>
        </page>
    </feature>
ビュー (MessageView.java)
    package examples;

    import feat2.CommandContext;
    import feat2.View;
    import feat2.config.ViewConfig;
    import feat2.template.HTMLDocument;

    public class MessageView implements View {

        private String message;

        public HTMLDocument format(
            HTMLDocument template, ViewConfig cfg,
            CommandContext ctx)
            throws Exception {

            template.findElement("message").setText(message);
            return template;
        }

        public void setMessage(String message) {
            this.message = message;
        }

    }
テンプレート (hello.html)
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type"
          content="text/html;charset=Shift_JIS">
    <title>タイトル</title>
    </head>

    <body>
    <p id="message">
    </body>

    </html>
## To Do pageに別のコマンドの実行結果をincludeできるようにする(2.1) inputのデフォルト値(2.1) userコンテクスト(2.1) フィーチャーを任意のパス(URI)に関連付けられるようにする(2.1) テンプレートのfast treeを実装する (2.1) 開発のベースをJava5.0に移行(3.0) アノテーションを使ったバリデータ (3.0) XHTMLテンプレートに対応(3.0) 設定ファイルの読み込みをJAXBに変更(3.0)

$Id: index.html,v 1.8 2006/05/18 13:10:24 sugimotokenichi Exp $