[cubby-user:223] Re: SELECTタグでindexプロパティがないのはなぜ?

Yasuyuki BABA [E-MAIL ADDRESS DELETED]
2012年 7月 6日 (金) 21:28:08 JST


馬場です。

すみません、今の Cubby の機能では対応できません。
解決策としては select タグからは単一の値しか入力されないことを前提として t:select
にかわる独自のタグライブラリを作ってしまうのが一番簡単かと思います。

以下、理由など。

HTML の select タグは multiple 属性を指定されたときに複数の値を選択できるようになります。
ひとつの HTML 上に name 属性の値が同じで multiple 属性が指定された select
タグが複数あったとき、リクエストの内容からはどの select タグから入力されたものか判断できません。
そのため t:select タグは index 属性を持っていません。

複数行の明細を持つような画面の場合は行ごとに name 属性を "name1", "name2"
などと変えてあげるのが良いのかと思うのですが、残念ながら Cubby ではそれに対応できません。
t:input タグでも type="check" や type="radio" のときに index 属性が無効なのですが、それも同様の理由によります。



2012年7月6日 9:29 はっしぃ <hasuie @ gmail.com>:
> いつもお世話になっております。
>
> Cubby 2.0.9 を利用して、明細タイプの登録画面にてドロップダウンリストを
> Cubby tag library の t:select を利用して作成していますが、
> indexプロパティがないためバリデーションでエラーが発生した場合に、全ての
> 明細行のドロップダウンリストがエラー扱い(ピンク色)になってしまいます。
>
> SelectTagのソースとInputTagのソースを比べたところ、以下のような
> 違いがありました。
> SelectTag にて index プロパティがサポートされていないのは
> 何か理由があるためでしょうか?
> もしくは、indexプロパティを利用せずに上記内容が回避できる手段が
> ありましたら、ご教授いただきたいのですが。
>
>
> # SelectTag.java
>
> if (!errors.getFields().get(this.name).isEmpty()) {
>     addCSSClassName(dyn, "fieldError");
> }
>
> # InputTag.java
> if (this.index == null) {
>     if (!errors.getFields().get(this.name).isEmpty()) {
>         addCSSClassName(dyn, "fieldError");
>     }
> } else {
>     if (!errors.getIndexedFields().get(this.name).get(index).isEmpty()) {
>         addCSSClassName(dyn, "fieldError");
>     }
> }
>
>
> 以上よろしくお願いいたします。
> _______________________________________________
> cubby-user mailing list
> cubby-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/cubby-user



-- 
BABA,Yasuyuki
yasuyuki.baba @ gmail.com


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