今回は正真正銘Cubbyネタ。というか今回がたぶん初めてかと。
3つあるけど、すべてselectカスタムタグまわりだけ。
まず、いろいろと調べていたらタグライブラリのexampleがミスしてるっぽい。たんなる参考情報なので影響はないけれども、使用例という部分なので真っ先に目を向けるであろう部分がミスをしてるのはまずいのかな?とおもた。
selectタグの抜粋。
<example> <![CDATA[ (JSP) <t:select name="typeId" items="${todoTypes}" labelProperty="name" valueProperty="id"/> (実行結果) <select name="typeId"> <option name="1">TodoType 1</option> <option name="2">TodoType 2</option> </select> ]]> </example>
optionのところはnameじゃなくてvalueだとおもわれ。
次。これは要望というべきか。
カスタムタグでHTMLは出来るだけ生成しないほうが、DreamWeaverやブラウザで直接JSP表示したときなどツールとの相性がよいのは皆さんご存知のとおり。Cubbyは一応用意はしているけど、使わなくてももちろん問題はない。
でも、面倒なのがselectタグ。optionを表示するのにぐるぐるforeatchさせるのがたるい。ここだけはなんとかしたいのだが、cubbyで用意されているタグはselectタグまるごと生成するのでツールとの相性が悪い。
そこで、selectTag.javaをコピって名前をOptionTagへ、そしてtldもselectをコピーしnameを消した(必須じゃなくした)。selectを生成しているところをコメント化。
つまり、
<t:select items="${action.items}" name="select" labelProperty="名前" valueProperty="id"/>
が、以下のようになる。
<select name="select"> <t:option items="${action.items}" labelProperty="名前" valueProperty="id"/> </select>
生成されるHTMLは同じ。でも、こちらならばツールとの相性も悪くない。デザイナと協業するのならこちらのほうがよい。