Kommentare
  • Thomas schreibt:
    #1 28.08.2008 23:19

    Hallo Stefan,

    danke fuer das Bereitstellen dieser Loesung. Ich habe die 3 Files Controller.groovy, renderEditor.template und list.gsp in /src/templates/scaffolding kopiert (von Deinem Source Code), ich kann auch am Parent-Ende der Many-To-Many bei einem Object Edit -> Assoc rufen, aber wenn ich dann ein Child auswaehle, bekomme ich einen Fehler

    //choose/2

    not found, HTTP 404, obwohl ich generate-all probiert habe und der Controller inklusive choose generiert wird. Hast Du vielleicht eine Idee?

  • Stefan Rinke schreibt:
    #1.1 02.09.2008 12:34

    Wie lautet denn die vollstaendige URL? vor dem "choose" muss ja der Name des Controllers stehen, in meinem Beispiel also "../book/choose/2".

    Ansonsten schick mir einfach mal die generierte Anwendung, dann schau ich mal rein.

    Gruss Stefan

  • Gregor schreibt:
    #2 25.09.2008 15:50

    Es scheint ein Problem zu geben, wenn die Domainklassen in Packages stecken. Dann wirft

    def toUnlink = grailsApplication.getClassForName( params["class"] ).get(params["id"])

    eine NullPointerException. Wenn ich den Paketnamen vorn anstelle (z.B.
    def toUnlink = grailsApplication.getClassForName("de.example." + params["class"] ).get(params["id"])

    funktioniert das ganze einwandfrei.

    Gruß, Gregor!

  • Stefan Undorf schreibt:
    #2.1 05.02.2009 04:35

    Für Domainklassen in Paketen lässt sich auch in renderEditor.template 'class':'${property.referencedDomainClass.fullName}' angeben statt nur der name ohne Paket. Wenn die id etwas einfacher mit 'source.id':${domainInstance}?.id angegben wird kann die erste Zeile von link und unlink im Controller so aussehen:
    def ${propertyName} = ${domainClass.fullName}.get(params["source.id"])

    So hats bei mir mit Klassen in Paketen funktioniert.

  • Horst Krause schreibt:
    #3 03.08.2009 10:03

    "Richtiges Many-To-Many mit Grails" dachte ich, genau das was ich suche, super!

    Aber: Mit den Anpassungen kann man zwar Associate/De-Associate durchführen, aber ein Add für n:m geht weiterhin nicht. Der Add-Link führt auf die Create-View der anderen Seite. Dort wird aber schon der übergebene Parameter nicht berücksichtigt, so dass der Rückweg nicht mehr funktioniert. D.h. man kann nur ein Objekt der anderen Seite anlegen, dieses wird aber nicht der ursprünglichen Seite zugeordnet. Außerdem erscheint nach dem Save die list-View der anderen Seite und nicht mehr die Edit-View aus der man gestartet ist.

    Oder hab ich da jetzt was komplett falsch verstanden?

  • Stefan Rinke schreibt:
    #3.1 03.08.2009 18:38

    In der Tat, da gibt's noch ein Problem. Aber vielleicht kannst Du den Code ja ergänzen, ich komme leider im Moment gar nicht dazu.

    Gruß Stefan

  • Horst Krause schreibt:
    #3.1.1 04.08.2009 12:24

    Ich habe ein paar Anregungen aus diesem Artikel nutzen können. Insbesondere sowas wie grailsApplication.getClassForName kannte ich vorher gar nicht und das war sehr nützlich. Vielen Dank dafür!

    Damit konnte ich meine angepassten Core-Templates nochmal um ein weiteres Feature erweitern.

    Ich habe dazu in einem anderen Forum was geschrieben:

    http://www.groovy-forum.de/read.php?3,5222

  • Sebastian Kurt schreibt:
    #4 09.01.2010 16:16

    existiert das Problem auch noch mit Grails 1.2? ich bekomme beim save die Fehlermeldung:

    Executing action [save] of controller [BlaController] caused exception: org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: Bla._User_fooBackref; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: Bla._User_fooBackref

    danke für nen Tipp
    Sebastian

  • Kommentar schreiben

    Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
    Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.

    Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss um dieses Verfahren anzuwenden.
    CAPTCHA