[Seasar-user:9373] Re: [s2jsf]独自タグ/コンポーネントをDIに定義したい

鈴木 順 [E-MAIL ADDRESS DELETED]
2007年 7月 23日 (月) 21:21:49 JST


米林さん

お世話になっております。鈴木です。

迅速な返信の方ありがとうございます。

> "独自タグをDI上に配備したい"
> というのは、独自のタグライブラリを作成したいという事でしょうか?

説明足らずで、すみません。
配置済みの独自タグライブラリに含まれる独自タグクラスです。
(UIComponentTagの実装です)
(独自tld等は既にjsf.diconに定義済みで動作もしています)

実行時に該当クラスの生成が今はnewInstance()が呼ばれて行われている
のですが、これをDI経由にしてDIにてassembleしたいと言う要望になります。
もっと直接的に言いますと、今は、
org.seasar.jsf.processor.TagProcessorImpl
のprocessで
Tag tag = (Tag) ClassUtil.newInstance(tagClass);
となっているのでDI上に存在する他のクラスが
自動バインディング(コンストラクタ)されないのを
されるようにできないかと言う要望になります。

そこで思いつく方法が、独自のSelector/Processor
を実装する方法ですが、これだと今開発中のProjectが
Seaser依存になってしまうので可能であれば避るべきと考えています。
同様の理由で、実行時にSingletonS2ContainerFactoryなどから他の
コンポーネントを取得するのも避けるべきと考えています。

私的には下のようにできるとありがたいと言った感じです。

>あつかましい話ですが、独自実装したタグクラスをどこかの
>diconファイルに登録したらOKであるといった形が最もうれしいです。
>
>また独自コンポーネントも同様に扱えるようになると、
>私的にはすごく良い感じです。
>これもやはり、
>独自用にComponentLookupStrategyを拡張するしかないのでしょうか?

UIComponentに関しては、DefaultComponentLookupStrategyの
getComponentByNameに渡ってくる、componentName名の規約が分かれば、
できそうな気もしますので、いまそちらを調べています。

以上 大変申し訳ございませんが宜しくお願いいたします。





Seasar-user メーリングリストの案内