2012-03-30 7 views
0

私はこのように、システム内のいくつかの既存のオブジェクトに基づくフォームでチェックボックスのリストを持っている:複数のチェックボックスをPlayフレームワークのリストにバインドするにはどうすればよいですか?

#{list items:foobars, as:'bar'} 
    <div> 
     #{set name:"foo.bars[" + bar_index + "]" /} 
     <label for="${bar.name}">${bar.name}</label> 
     <input id="${bar.name}" name="${name}" type="checkbox"> 
    </div> 
#{/list} 

私はFooのオブジェクトがすべきバーオブジェクトのリストにそれらをバインドするためにプレイしたいと思います含む。 (FooとBarは多対多の関係にあります)

これは機能しません。 Playでこれをどうすればできますか?

答えて

2

私の場合、古いロングコレクションバインディングに頼っていましたが、IDの関連付けされたコレクションのbindindを作成できませんでした。フィールドの名前の提案された名前付けを使用しました。次のコレクションを使用して、

Set<Long> bars 

検証コードが見えるはずですのでコレクションは、ゼロnullでない長さであってもよく、選択されていないチェックボックスが存在しない場合ことに注意してください:

if (bars == null || bars.size() == 0) 
    validation.addError("bars", "Please selecta at least one bar"); 

後者に、あなたがすべきコントローラハンドラでJPAでバーをインスタンス化するyのID、および、fooのコレクションに追加します。

for (Long id : bars) 
    foo.bars.add((Bar) Bar.findById(id)); 

さようなら
ハンス

関連する問題