| 

.NET C# Java Javascript Exception

sortableColumn für ein Nicht-Property

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.


sortableColumn für ein Nicht-Property

koeberle - 02.03.2009 16:52
Hallo zusammen,

ich habe eine Domain-Klasse mit einer 1 zu n Relation. Ich würde gerne die Anzahl (n) in einer Liste ausgeben und diese mit einem sortableColumn-Tag versehen. Die Anzeige der Anzahl get soweit. Sortieren mag Grails aber nicht so gern.
class Parent {
    def hasMany = [childs: Child]
}
<tr>
    <g:sortableColumn property="childs.size()" titleKey="parent.childs" />
</tr>
...
<tr>
    <td>${parent.childs.size()}</td>
</tr>
Wenn ich den sortableColumn-Tag so verwenden bekomme ich folgenden Fehler:
org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: childs.size() of: Parent

So geht es übrigens auch nicht:
<tr>
    <g:sortableColumn property="childs" titleKey="parent.childs" />
</tr>

// -->  java.lang.ArrayIndexOutOfBoundsException: 0


Das Ganze sieht ja so aus, als ob das alle über Select gereget wird, was ja in diesem Fall nun wirklich nicht sein muss. Gibt es eine Möglichkeit Grails irgendwie die ganze Geschichte unterzujubeln?

Vielen Dank schon mal,

Christian


Re: sortableColumn für ein Nicht-Property

koeberle - 03.03.2009 11:30
Um das Problem zu lösen musste ich ein paar Anpassungen im Controller vornehmen. An Stelle von GROM muss ich jetzt Hibernate Criteria verwenden. Das macht die ganze Sache ein wenig komplexer, eröffnet aber völlig neue Möglichkeiten. So kann man auch nach Properties von Properties sortieren. [www.grails.org]

Hier meine Lösung:
def list = {

        def parents = Parent.withCriteria {

             if (params.sort == 'childs') {
                //hier nichts machen, wird später sortiert
             } else {
                order(params.sort, params.order)
            }
        }
        if(params.sort == 'childs'){
            parents.sort{it.childs.size() * (params?.order == "asc"? 1 : -1) }
        }

        [ parentInstanceList: parents ]
    }


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "sortableColumn für ein Nicht-Property" 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.