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