2012-03-26 8 views
3

Dies ist, was ich in der Tabelle haben:Erste Liste der ausgewählten Kontrollkästchen in der Tabelle

<td><g:checkBox name="book_${bookInstance.id}"/> </td> 

Und das ist, wie ich versuche, Instanzen erhalten ausgewählt:

params.each{ 
      if(it.key.startsWith("book_")) 
       books << (it.key - "book_") as Integer 
     } 

Ich bin eine leere Liste bekommen . Wie behebe ich das? Ich bin offen für Vorschläge, wenn Sie eine bessere Lösung haben.

Antwort

5

Versuchen Sie, die Liste der Kontrollkästchen mit dem gleichen Namen, aber anderen Werten zu erstellen.

params.list('books') 
+0

ich das versucht habe und es funktioniert nicht. Ich habe genau das Gleiche gemacht und ich bekomme eine leere Liste. Und selbst wenn es funktionierte, würde ich erwarten, dass es alle Instanzen zurückgibt, nicht nur die ausgewählten. Etwas Hilfe/Klärung wäre großartig. – drago

+0

Ich vermute das Problem (oder auf der Liste der Teil davon) ist, dass ich das Formular mit übergebe, die nur die Parameter übergibt, die im g: jasperReport-Tag definiert sind. – drago

3

Meine Antwort ist auf jeden Fall zu spät, da die Frage eine Weile zurück gefragt wurde:

<g:each in="${books}" var="bookInstance"> 
    <g:checkBox name="books" value="${bookInstance.id}"/> 
</g:each> 

Dann in Ihrem Controller können Sie die Liste der ausgewählten Buch-IDs über bekommen. Wie auch immer, ich habe ein ähnliches Problem gelöst, bitte versuchen Sie es.

<td><g:checkBox name="registerBook" value="${bookInstance.id}" checked="false"/> </td> 

Controller-Code, um die Liste der ausgewählten Bücher zu erhalten:

def checkedBooks = params.list('registerBook') 
//get list of books. this will return only the selected books 
def selectedBooks = Book.getAll(checkedBooks) 

for(result in selectedBooks){ 
//now manipulate the result as you wish ... 
} 
Verwandte Themen