[mayaa-user:659] Re: プロセッサ追加のご意見募集

かとちん@mayaa-ml [E-MAIL ADDRESS DELETED]
2008年 5月 19日 (月) 13:31:18 JST


加藤です。

> 慎重になっているのですが、上記の使い方がそれなりに多くなされて
> いるのであれば本体に含める価値があると思います。

基本プロセッサの複合プロセッサが標準セットに含まれることには抵抗があります。
シンプルさが失われ、他の複合パターン、あれもこれも…と考えられるものが多く
歯止めが利かなくなるように思います。
拡張ライブラリの方が良いと思います。

別案があります。もし基本プロセッサを拡張するということであれば、
プロセッサを追加するよりも、横断的な共通属性を追加するほうが良いように思います。
基本プロセッサの共通属性としてtestが暗黙に存在するという意味合いです。
GUIプログラムでいうところの、Control既定クラスにVisibledやEnabledが最初からあるというような感じでしょうか。
あるプロセッサを適用するかどうかを示すtest属性をほぼ全て(エンジン機能を示すものに入れるかどうかは要検討)
のプロセッサに入れてしまえば良いと思います。
命名的には、test属性よりはenabled属性にした方が個人的には好みですが。
enabledは指定が必須ではないデフォルト値trueの属性として存在する感じです。
ただ、ifプロセッサにtest,enabledと両方持つことになり扱いが複雑になるので、
もっと検討しなければならないでしょう。
.mld上で敢えて定義しなければ良いだけなので、ifのtestはenabledのラッパー実装としちゃっても
良いですけど。

> その他にもこういうプロセッサがあるといいな、という意見もありましたら
> どうぞ。(お応えできるとは限りませんが)
JSTLにはあるので、choose when otherwiseに該当するものですかねー。
1つのコンディション結果がある程度の重い処理を経て
得られるものであれば必要に思います。
コンディション結果の保存にかんしてはスクリプト使うなど代替方法はありますけど、
タグだけで解決するのでシンプルになると思います。
それにwhenの場合は最初にヒットしたら残りのwhenは無視する扱いとすれば評価する回数が
減るのでパフォーマンスも良さそうです。
これについてはwhenにbreak属性を設けて、break=trueであれば、以降のwhenを無視する。
break=falseであれば、続くwhenの評価を続行する…というのでも良いかもしれません。

後は、xml的に美しくないので邪険にされやすいelseタグでしょうか。
labelタグのようにfor属性で、ifにつけたmayaa-idを特定させれば良いように思います。
前述したotherwiseはelseにして共通にしてしまっても良いですが。(for属性の対象が
ifかchooseであれば良いだけですので)
ただmayaa-idはHTMLとのバインド目的にあるので別の属性にしないとダメでしょうね。
コンポーネントと同様 name属性辺りが妥当でしょうか。

whenやelseがfor属性を持つメリットとしては、ブロックが同一箇所に固まる必要がないことに
あると思います。
最初に得た条件結果を以ってページ上のあらゆる位置で、効果を変えることができると思います。
JSTLのchoose when otherwiseとも一味違うので良いかなぁと思います。





> suga です。
> 
> [mayaa-user:654] でちょっと話題に出した echoIf プロセッサを
> mayaa-1.1.18-SNAPSHOT に含めてみました。
> Maven2 または下記 jar ファイルで利用できます。
> http://maven.seasar.org/maven2-snapshot/org/seasar/mayaa/mayaa/1.1.18-SNAPSHOT/mayaa-1.1.18-20080518.074217-1.jar
> 
> これを mayaa 本体に含めようかと考えています。
> 本体に含めない場合、extension の jar を一緒に使う形になります。
> 
> 本体に含めた方が嬉しいか、本体に含める必要はないと思うか、ご意見
> 募集します。
> 
> 
> echoIf プロセッサは簡単に言うと
> 「ある条件を満たしたときだけテンプレートのタグを出力したい」
> という場合に
> 
> <m:if m:id="xxx" test="${...}">
>     <m:echo><m:doBody/></m:echo>
> </m:if>
> 
> という記述を
> 
> <m:echoIf m:id="xxx" test="${...}"/>
> 
> と表記できるというだけのものです。
> 
> 
> 本体のプロセッサを増やしすぎないようにしたいと考えているため、
> このように既存のものの組み合わせで実現できるものを追加することに
> 慎重になっているのですが、上記の使い方がそれなりに多くなされて
> いるのであれば本体に含める価値があると思います。
> 
> 
> 実際に利用されている方の意見を聞かせていただければ助かります。
> 
> 
> その他にもこういうプロセッサがあるといいな、という意見もありましたら
> どうぞ。(お応えできるとは限りませんが)
> 
> 
> 以上、よろしくお願いします。




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