[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 メーリングリストの案内