勝手にWish-list for JSF2.0


最近JSF2.0の仕様について、議論されているようですが、

JSF実装を作った経験から、個人的なWish-listを再度整理して並べてみたいと思います。


ちなみにKito D. Mannさん(JSFCentralの人 & JSF in Actionの著者の方)のlistはこれ。


・デフォルトのViewはXHTML

まちがいなくJSPのViewではなく、XHTMLのほうが良いと思います。


JSPタグへの依存の排除

できればTLDやタグリブは書かないですませる方向にしたほうが

よさそうです。というかJSPへの依存は排除してほしい。


・FacesContext

そこそこ良く出来ているFacesContextのAPIですが、

いくつかの点で使いにくいです。

例えばFacesMessageの破棄などが出来ない点です。

あとは何故かabstractクラスw

FacesMessageなんかもリソースを色々取れるような仕様にしたほうが良いきがするのだけど。



・EL


JSPのELではなく、自前のELのAPIを改善して欲しいですね。

特にMethodBindingはOGNLなんかに比べてしまうと貧弱なので。

特に、評価する部分は特にこちらで選べるようにしてほしいなあ。


・RendererAPIの整理

これはカスタムコンポーネントの作り手には実は一番重要かもw

今のAPIはしんどすぎます。Tapestryだと非常に詳細にRendererまわりの

ライフサイクルが定義されているのですが、それに比べるとJSFのRendererは

おおざっぱすぎるような気もします。TapestryのRendererが完全かといわれるとそうでもないのですが。


・LifecycleのCoR化


Lifecycleはそこそこ良く出来ていると思っているのですが、

いっそのことLifecycleの各PhaseはCoR(Chain of Responsibility)に

したほうがいいんじゃないかと思います。

今はがっちりとライフサイクルが仕様に記述されてしまっていますが、

それをプラグインのようにしてほしいかなあ。デフォルトは決まっていてもいいので。



・Managed-beanの初期化などのライフサイクルメソッドの提供

これはKitoさんも言っていますが、仕様として盛り込んで欲しいですね。

特に初期化のタイミングが定義されていないのは問題です。

あれば良いかなと思っているのは、初期化、破棄時、Validation前後とか、描画前後とかかな。



Ajaxとの親和性


JSFコンポーネントツリーとAjaxはあまり親和性が高いとはいえません。

コンポーネントツリーを動的に変えないような見た目だけしか

変えないAjaxであれば問題ありません。コンポーネントツリーを動的に変えるような

場合は、JSF実装のほうで結構がんばらないといけないのも事実です。

この点は改善されて欲しいな。


・ValidatorやConverterのtarget指定


Validatorがどのボタンで動くのかのtarget指定とかの機能は

仕様としてあったほうが良いです。


・Managed-beanのAPI


実は何もないManaged-beanのAPI。さすがに少しは作ったほうが良いと思う。

で、実装はS2なり、Springなり、Guiceなりにまるなげできるようにするべき。


・Scope


まあもっとあったほうがいいかな。


・NavigationRule


もうTeedaExtensionを使うと、めっきり書き方すら忘れるNavigationRuleですがw

正直いけてないです。XMLで書く機能はあってもいいですが、仕様としては

デフォルトはアノテーションを使うようにすべきかな。


・HTMLレンダリング意外の描画の汎用性


あー、これはあんま言いたくない部分もあるんだけどw、

JSFってHTMLの描画だけじゃない可能性を考えてるんだ、みたいなこと言ってるけど、

必要ないです。断言。まちがいない。


そんなことより、Webアプリケーション作るのにより快適でストレスなく出来るような

仕様にすべき。


・カスタムコンポーネントの作りやすさ


これももっと簡単になってほしい。今は正直そこそこ難しいと思う。


・FacesServlet


Servletじゃなくて、Filterベースにできないかな。

あとServletでもいいんだけど、finalクラスはやりすぎだと思う。


・UIコンポーネント


もう少し気楽に出来るのがいいんだけど。

もしくはUIComponentごとなくしてみるとか。デフォルトステートレスにするんであれば

そういう選択肢もなくはない。


JavaScriptなどのリソースのAPI


忘れてた。JSFにはJavaScriptCSSなどのリソースを読むAPIってのが

ありません。で、みんな独自実装してるのだけど、これは標準にすべきですね。