2012-03-30 3 views
0

Ich habe eine Liste von Kontrollkästchen in einem Formular, das auf einigen bereits bestehenden Objekte im System, wie dies beruht:Wie kann ich mehrere Kontrollkästchen an eine Liste im Play-Framework binden?

#{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} 

Ich spiele möchte sie in die Liste der Bar Objekte zu binden, das Objekt Foo sollte enthalten. (Foo und Bar hat eine Viele-zu-Viele-Beziehung)

Dies funktioniert nicht. Wie kann ich das mit Play machen?

Antwort

2

In meinem Fall habe ich auf die alte Long Collection-Bindung zurückgegriffen, ich bin nicht in der Lage, Bindind JPA zugeordneten Sammlungen mit der ID vorgeschlagene Benennung von Feldern zu machen: Verwenden Sie die nächste Sammlung für die Bindung der ID im Webformular ausgewählt:

Set<Long> bars 

beachten Sie, dass, wenn es keine Checkbox die Sammlung ausgewählt ist null sein kann und nicht die Länge Null, so dass die Code-Validierung aussehen sollte:

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

Letzter auf, in den Controller-Handler sollten Sie Instanziieren Bars mit JPA finden b y-ID und fügen Sammlung Foo:

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

Bye
Hans