Doc: http://grails.org/doc/latest/guide/GORM.html#criteria
Die Klasse hat zwei Methoden:
- list, macht eine Liste des Typs
java.util.List
- totalCount, gibt die Anzahl der in der Liste befindlichen Elemente zurück. Typ:
int
Hier im Bsp. einemsFilters auf der View: Es soll auf einer View ein Suchfeld definiert werden, dass den Inhalt einer Liste (unter dem Suchfeld angezeigt) gemäss den Suchkriterien eingränzt.
im Controller:
... def search = { def criteria = User.createCriteria() def users = criteria.list{ maxResults(10) order("name", "asc") if(params?.search){ or{ // Hier kann nun definiert werden nach was gesucht werden soll like('vorname',params.search+'%') like('name',params.search+'%') like('ort',params.search+'%') } } } log.debug "Returning $users.size users." // Zeigt in der Konsole welche Treffer der Suche gefunden wurden render(template:'list', model:[personList:users]) } ... |
in der View:
... <g:message code="menu.search" />: // Suchefeld-Text <g:remoteField action="search" controller="user" update="list" name="search" paramName="search"/> ... |
<g:setProvider library="jquery" /> <table> <thead> <tr> <g:sortableColumn property="name" titleKey="user.name" /> <g:sortableColumn property="vorname" titleKey="user.vorname" /> <g:sortableColumn property="ort" titleKey="user.ort" /> <g:sortableColumn property="sprache" titleKey="user.sprache" /> </tr> </thead> <tbody> <g:each in="${personList}" status="i" var="person"> <tr> <td><g:link action="show" id="${person.id}"><ben:raw value="${person.name}" /></g:link></td> <td><g:link action="show" id="${person.id}"><ben:raw value="${person.vorname}" /></g:link></td> <td><ben:raw value="${person.ort}" /></td> <td><g:message code="user.sprache.${person.sprache?.lang}" /></td> </tr> </g:each> </tbody> </table> |
Siehe auch Blogeintrag von Webacons