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 $