selectManyCheckboxの出力するlabelタグがIE6で動作しない
S2JSFのselectManyCheckboxでは、チェックボックスに対してlabelタグを出力してくれます。
<label><input name="_id88:_id95" type="checkbox" value="1" />One</label>
ただし、この形式はIE6ではサポートしていないようです。
HTML的には、以下のようにtext値をlabelタグで囲む必要があるようです。
(IEが悪い?)
<input id="_id88:_id95" name="_id88:_id95" type="checkbox" value="1" /><label for="_id88:_id95">One</label>
idを振って、labelのスタートタグをひとつ後ろに持っていく感じですね。
というわけで、selectManyCheckboxがIE対応できなくて困っています..orz
S2JSFのorg.seasar.jsf.render.html.HtmlSelectManyCheckboxRenderer.java あたりなんでしょうか。。
inputタグのm:required属性やValidtorをボタンによって無効にしたいんですが..
(前振り)S2JSF1.1系では、Validatorをボタンによって有効/無効にする仕組みがあります。
s2jsf-exampleの『Validator ON/OFF』を参考にするといいでしょう。
http://localhost:8080/s2jsf-example/validator/validator2.html
以下にHTMLテンプレートを抜粋します。
<input id="userName" type="text" m:label = "User Name" m:value="#{validatorDto.userName}" m:required="true"> <span m:inject="s:validator" m:binding="#{tuserNameLengthValidator}"/> </input> <span m:inject="h:message" m:for="userName"/><br /> <input id="aaa" type="button" value="validation button" m:action="aaa"/> <input id="bbb" type="button" value="no validation button" m:action="bbb"/>
examples.jsf.dicon.allvalidator.dicon には、ボタン『aaa』の場合だけこのValidatorが有効になるように定義されています。
<component name="tuserNameLengthValidator" class="org.seasar.teeda.extension.validator.TLengthValidator"> <property name="minimum">2</property> <property name="target">"aaa"</property> </component>
上記の方法に関して、欲しい!と思う機能
1.m:required="true" もボタンによって切り替えたい
例えば、ユーザ登録で『郵便番号から住所を補完する』という画面を作りたい場合、
名前が未入力でエラーになってしまったり。。。という悩みが発生します。
例えばこんな感じで、m:target属性を用意し、登録ボタン(doRegist)だけを対象にできるといいと思います。
<input id="userName" type="text" m:value="#{validatorDto.userName}" m:required="true" m:target="doRegist" > </input>
2.targetに正規表現を使えるようにしたい。
遷移系は『goXXX』、実行系は『doXXX』とActionのメソッド名を決めておいて、targetには正規表現で指定しておくことで、
Validatorを再利用しやすくなると思っています。
<component name="tuserNameLengthValidator" class="org.seasar.teeda.extension.validator.TLengthValidator"> <property name="minimum">2</property> <property name="target">"do.*"</property> </component>
3.targetをHTMLで指定できるようにしたい。
HTMLテンプレートでtarget属性を上書きできたりするといいなと思います。
<input id="userName" type="text" m:label = "User Name" m:value="#{validatorDto.userName}" m:required="true"> <span m:inject="s:validator" m:binding="#{tuserNameLengthValidator}" m:target="bbb" /> </input> <input id="aaa" type="button" value="validation button" m:action="aaa"/> <input id="bbb" type="button" value="no validation button" m:action="bbb"/>
なんか上手くまとまっていませんねぇ。。
Teeda Extentionだとこのあたりは解決しているように見えますが、S2JSFな私にも欲しいです。