ひがやすを技術ブログ

電通国際情報サービスのプログラマ

S2JSF Maya S2Pages S2Struts

ほんとは、明日話そうかと思っていたのですが、混乱をまねきそうなので、1日早くリークしておきます。今日1日議論する時間があった方がいいと思ったからです。また、この内容は、誰の合意も得てないことをはじめに言っておきます。(笑)
現在のS2JSFは、HTMLをコンパイルして、直接JSFコンポーネントツリーを作成しています。
これをHTMLをコンパイルして、JSFJSPのTagのツリーを作るように変更します。
この部分は、JSFとは切り離します。この部分を実現するのがS2Pagesです。
今のorg.seasar.jsf.templateを汎用的にしたものです。
重要なインターフェースは、TagHandler(S2JSFではTagSelector)です。

TagHandler


boolean isHandleble(String namespaceURI, String localName,
String qName, Attributes attributes);

Tag createTag(String namespaceURI, String localName,
String qName, Attributes attributes);
S2Pagesは、HTMLをNekoHTMLでSAXで処理します。
SAXのイベントのstartElement(String namespaceURI, String localName, String qName, Attributes attributes)でTagHandlerのリストを登録順に検索し、最初にisHandleableがtrueを返したTagHandlerのcreateTag()を呼び出し、Tagのツリーを作成します。
S2JSFのViewTemplateHandlerをみれば、実装イメージがつかめます。
後は実行時にPageContextを作成して、Tagにセットして、ツリーをWalkすればOK。この辺は、以前にやったことあります。
S2SFは、今のS2JSF-EL部分とTagHandler群で構成されます。
MayaもTagHandlerを実装するようにすることでS2JSFと併用できます。
MayaとS2JSFは仕様をマージした方がいいと思っていて、HTMLにマッピング情報を記述するときにはS2JSF、別の設定ファイルに切り出すときには、Mayaを使うという風にした方がいいのではないでしょうか。 -> まさたかさん
S2JSFのTagHandler群と同様の仕組みで、Strutsも対応できます。-> きむきむ