[Seasar-user:7566] Re: [Teeda] Ajaxで連動させる2つのプルダウンリスト
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 5月 10日 (木) 09:01:18 JST
米林です。
From: "出羽 健一" <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, May 09, 2007 5:33 PM
常にNullLabelを表示するように、teedaCustomize.diconに
<component class="org.seasar.teeda.extension.util.NullLabelStrategyImpl">
<property
name="forceNullLabel">@[E-MAIL ADDRESS DELETED]
ULL_LABEL</property>
</component>
を設定する方法ではいかがでしょうか?
この設定で、NullLabelは常に表示されるようになります。
今回の場合、Ajaxとはあまり関係が無く
Teedaのプルダウンの仕様で@Requiredが指定されて
プルダウンを形成するItemsの中身が空の場合に
selectタグ自体がレンダリングされないことが原因ですね。
だからといって、Itemsが無くてもselectタグだけ
レンダリングすると@RequiredでのNullLabel表示を
レンダリングしない仕様と整合性が取れなくなります。
コミッタ間で相談してみます。
> 出羽です。
>
> > TeedaAjaxを使っていますか?
>
> TeedaAjax とは直接関係ないかも知れませんが、TeedaAjaxを
> 使う時にハマってしまいそうです。
>
>
> > すいません、ちょっと分かりません...
> > もう少し詳細に教えて頂けますか?
>
> こちらこそ、分かりにくくてすみません。
> 補足させて頂きます。
>
>
> まず、HTML及びPageは下記のようになっています。
>
> HTML側
> <select id="categoryId" onchange="searchProductByCategory(this.value)">
> <option value="1">カテゴリ1</option>
> <option value="2">カテゴリ2</option>
> </select>
>
> <select id="productId">
> <option value="1">商品1</option>
> <option value="2">商品2</option>
> </select>
>
> Page側
> private categoryId;
>
> private List<Map<String, String>> categoryIdItems;
>
> @Required
> private productId;
>
> private List<Map<String, String>> productIdItems;
>
>
> productIdのセレクトボックスは、categoryIdのセレクトボックスの
> 値がチェンジした時のタイミングで値がセットされるので、
> 最初は何も値が入っていません。
>
> この状態で、Page側のproductIdに@Requiredを付けると、
> NullLabelがなくなるというTeedaの仕様のためか
> productIdのセレクトボックスに値が0件の場合は、
> 丸ごと消えてしまいます。
>
> このため、categoryIdのセレクトボックスの値をチェンジしても、
> 値をセットする先がないという問題が出てしまいます。
>
> プルダウンに@Requiredを付けた場合でも、NullLabelが表示されていて、
> 画面遷移した時にバリデーションがかかるようなパターンも
> 選択できるようになっていると解決しそうです。
>
> (ひとまず、空文字をNGにするプルダウンリスト用の
> 独自バリデータを作ればなんとかなりそうですが、
> 独自色の強いコードになってしまうので、できれば避けたいと思っています。)
>
> 以上、よろしくお願いします。
---
米林 正明
[E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内