| 

.NET C# Java Javascript Exception

Grails Templates Generation - Customized Views - Relation 1:1, n:m, 1:n, etc

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.


Grails Templates Generation - Customized Views - Relation 1:1, n:m, 1:n, etc

thnaxy@gmail.com - 25.06.2009 23:03
Hallo,

ich habe folgendes "Problem" in nutze die Grails Templates und möchte diese customizen. In der Applikation sind 2 simple DomainClasses vorhanden.
Person und Adresse, d.h. in diesem Beispiel/Fall kann ein Kunde jedoch nur über eine Adresse verfügen.

public class Person {
String vorname;
String name;
Adresse adresse = new Adresse();
}

public class Adresse {
String strasse;
String plz;
String ort;
static belongsTo = [person:Person]
}

Dazu habe ich versucht die Grails Templates show.gsp anzupassen, ich möchte damit erreichen, das auf der show.gsp des Kunde auch die Felder der Adresse generiert werden und somit zur Darstellung gebracht werden. Mir ist unklar wie ich Zugriff auf die entsprechende Adresse-DomainClass über die DomainClass Kunde erhalte. Nach Analyse des Codes ist mir aufgefallen das Grails dies mit dem folgenden Snippet realisiert. In diesem Fall möchte ich jedoch die Properties der Adresse-DomainClass generieren anstatt den Links auf das Adresse Objekt.
Wie gehe ich dabei am besten vor? Im Prinzip müsste man doch nur die Felder der "p.referencedDomainClass" abfragen und iterieren, sofern dies ein "p.oneToMany || p.manyToMany" o.ä. erfüllt? Wie bilde ich dies in der Grails Syntax ab? Welche Möglichkeiten stehen mir zur Verfügung?

Snippet:
<%  } else if (p.oneToMany || p.manyToMany) { %>
   <td  valign="top" style="text-align: left;" class="value">
<g:each in="\${${propertyName}?.${p.name}}" var="${p.referencedDomainClass?.propertyName}Instance">

Template-Snippet:
                        <%  excludedProps = ["version",
                                             Events.ONLOAD_EVENT,
                                             Events.BEFORE_INSERT_EVENT,
                                             Events.BEFORE_UPDATE_EVENT,
                                             Events.BEFORE_DELETE_EVENT]
                            props = domainClass.properties.findAll { !excludedProps.contains(it.name) }
                            Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[]))
                            props.each { p -> %>
                            <tr class="prop">
                                <td valign="top" class="name"><g:message code="${domainClass.propertyName}.${p.name}" default="${p.naturalName}" />:</td>
                                <%  if (p.isEnum()) { %>
                                <td valign="top" class="value">\${${propertyName}?.${p.name}?.encodeAsHTML()}</td>
                                <%  } else if (p.oneToMany || p.manyToMany) { %>
                                <td  valign="top" style="text-align: left;" class="value">
                                    <ul>
                                    <g:each in="\${${propertyName}?.${p.name}}" var="${p.referencedDomainClass?.propertyName}Instance">
                                        <li><g:link controller="${p.referencedDomainClass?.propertyName}" action="show" id="\${${p.referencedDomainClass?.propertyName}Instance.id}">\${${p.referencedDomainClass?.propertyName}Instance.encodeAsHTML()}</g:link></li>
                                    </g:each>
                                    </ul>
                                </td>
 


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Grails Templates Generation - Customized Views - Relation 1:1, n:m, 1:n, etc" 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.