-私的イメージ(7)-存在できない子タグを作る

さて、問題の、HTML上のinputタグに、JSFのinputTextを割り当てたときに子タグでConverterやValidatorを指定したいがHTML的(NekoHTML的)にNG。どうしようか考えました。金言「押してもダメなら引いてみな」。パーサーを作るということは仕様さえしっかりすればどうとでもなるので、悪ノリ的には子ではなく、親タグにして囲うというのを考えました。まさに押さずに引きます。。。が、複数子タグを置きたい時ダメじゃないか!
ということで、パーサーへマジック属性で通知して、グループ化する構造をやったらどうかな。こういう発想は超Tapestry的です。いや〜本当にすごいよHoward Lewis Ship(Tapestry作者)さん。TapestryはパースにNekoHTMLを使ってないのと、JWComponent部分はXMLにしちゃうのでこういう苦労は無いために、$group$なんて無いのですけどね。

<span jwcid="$group$">
  <input type="text" jwcid="@h:inputText" value="el:model.userName"/>
  <span jwcid="@f:validateLength" maximum="16" minimum="1"/>
</span>

JSPタグで$group$に代わる機能を実装できれば、マジック属性は無しでもOK。マジック属性はTapestryの$remove$はほしいと思います。この$remove$を与えられたタグの囲みはパース時に無条件に削除されます。デザイン時用のダミー部分を削るのに使います。ほんとに削ったらプレビューできなくなりますから。Tapestryの$content$は今のところ用なしですが、もし必要になるとするとまたこれは凄いことができるのですが。。。HTMLテンプレートのコンポーネント化です。もうちょっと考えればできそうですが、今のところうまく思考の整理がついていません。後々の課題とします。
例中のmaximum属性でel:をつけてないのは、リテラルだからです。さて、このel:プレフィックスは好みの問題ですが、人気はどうかな?JSF-JSPのように#{}で囲うという手もあります。何が必要かというと、リテラルと式とが区別できれば良いのです。