feat

News
featについて
To Do

News

2008/8/15 - バージョン2.0.4 リリース

  • キャッシュの状態を取得できるようにした
  • プロジェクト設定のbeanutilsのパスが絶対パスだったのを修正
  • Cacheを自動でクリーンアップするようにした。
  • Cacheにremoveメソッドを追加。
  • TemplateLoaderのキャッシュをHashMapからCacheに変更
  • ライブラリの依存管理をIvyで行うように変更

2008/3/15 - バージョン2.0.3 リリース

  • キャッシュ掃除のバグを修正

2007/12/16 - バージョン2.0.2 リリース

  • HTMLノードのメソッドを追加。getElement(), getElement(int), selectElementsByClass(String), repeat(int)
  • Flashクライアントと通信する機能を追加
  • フィーチャー設定ファイルで、outputのmappingを解釈する際に例外が出ていたのを修正
  • 付属のライブラリを更新

featについて

featはシンプルなWebフレームワークです。簡単なXMLの設定ファイルは必要ですが、できるだけJava言語で書けるようになっています。設定ファイルの柔軟さとJavaプログラムの自由度という2つの利点を取り入れています。

テンプレートエンジンは純粋なHTMLを使うように設計されています。JSPやほかのテンプレートエンジンは独自のタグや記述をHTMLに埋め込んでしまうため、デザインの修正が困難になります。featではHTMLのドキュメントツリーから要素を検索して書き換えることで動的なドキュメントを生成します。DOMに生でアクセスするような面倒を排除するため、便利なテンプレートAPIを用意しています。

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 251 2008-08-15 14:55:55Z sugimotokenichi $