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