2012-03-30 83 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

在我的情況下,我使用舊的Long集合綁定,我一直無法使用id建議的字段命名來創建JPA關聯集合的bindind:使用下一個集合來綁定在Web表單上選擇的id:

Set<Long> bars 

請記住,如果沒有選擇收集複選框可以爲空,而不是零長度,所以驗證代碼應該是:

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

後者上,你應該控制處理程序與JPA的instanciate酒吧發現b ŸID,並添加到foo集合:

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

再見
漢斯

相關問題