| 

.NET C# Java Javascript Exception

Groovy- und Grails-Wiki: Checkbox-Gruppe als Liste behandeln

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


|
Home
G’day (anonymous guest)
Log in
My Prefs
Checkbox-Gruppe als Liste behandeln
view
edit
clone
find
Quick search
(type ahead)
Recent Searches
(Clear)
Your trail: 
More...
View Page Source
More...
Letzte Änderungen
Alle Seiten
About
SystemInfo
UngenutzteSeiten
AnzulegendeSeiten
View
Attach
Info
> Grails-Kochbuch > Checkbox-Gruppe als Liste behandeln
Ein Rezept soll nach folgendem Muster aufgebaut sein. Gib der Seite einen möglichst kurzen und aussagekräftigen Namen.
Problem
Du willst mit einer Gruppe von Checkboxen die Elemente einer Liste auswählbar machen und in einem Objekt speichern.
Lösung
Mit eachLine und einer Closure wird jede Zeile ausgegeben.
Du gibst in der entsprechenden GSP-Seite mit <g:each> und einem darin enthaltenen <g:checkBox>-Tag die Liste aus.
Wichtig ist der Name der Checkbox (hier: "bntzr.${it.id}"), der aus einer Zeichenfolge, gefolgt von einem Punkt und der ID des jeweiligen Objekts besteht. Die Zeichenfolge am Anfang muss sich von dem Namen der Liste im zugehörigen Objekt unterscheiden. In diesem Fall wäre "benutzer.${it.id}" falsch, weil das Attribut in der Klasse den gleichen Namen trägt. Sonst gibt es später Probleme im Controller, weil versucht wird, die mit dem gleichen Namen übergebenen Parameter, direkt an das Domain-Objekt zu übergeben und dort noch keine Liste existiert; die wird erst implizit mit addToX(...) angelegt. Wegen des Punktes im Namen macht Grails daraus einen mehrdimensionalen Parameter.
Im Attribut value kann ein beliebiger boolscher Ausdruck stehen, der angibt, ob das Feld vorbelegt ist oder nicht.
<g:each in="${Benutzer.list()}">
<g:checkBox name="bntzr.${it.id}" value="${false}"/> ${it.name}<br />
</g:each>
Im zugehörigen Controller werden die ausgewählten Elemente gespeichert. Mit der Methode keySet() der Klasse java.util.Map werden alle Schlüssel der Map zurückgegeben, in diesem Fall sind das die IDs der Benutzer.
def save = {
def gruppe = new Gruppe(params)
params.bntzr.keySet().each{
def b = Benutzer.get(it.toLong())
gruppe.addToBenutzer(b)
}
if(!gruppe.hasErrors() && gruppe.save()) {
// ...
Für das Beispiel wurden die beiden folgenden Domain-Klassen verwendet:
class Gruppe {
String name
static hasMany = [benutzer:Benutzer]
}
class Benutzer {
String name
}
Add new attachment
Only authorized users are allowed to upload new attachments.
«
This page (revision-1) was last changed on 05-Jun-2008 00:25 by ChristianHelmbold
G’day (anonymous guest)
Log in
My Prefs
Groovy-Buch
Groovy-Kochbuch
Grails-Buch
Grails-Kochbuch
Spezialseiten
Letzte Änderungen
Anzulegende Seiten
Ungenutzte Seiten
Liste aller Seiten
Suchen
WikiEtiquette
-Syntax
JSPWiki v2.6.2
Home
JSPWiki v2.6.2

Diese Seite zeigt Informationen zu "Groovy- und Grails-Wiki: Checkbox-Gruppe als Liste behandeln" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.