Tengo el dominio "país" y en la lista.gsp tengo el bloque de búsqueda con el campo de entrada. El primer problema fue que cuando traté de usar paginate en mi lista siempre mostraba todos los resultados, en este caso encontré la solución y envié solo 10 valores para mostrar (si conoce otra solución, por favor dígame). Mi búsqueda se ve esto:grails paginación de los resultados de búsqueda
def search = {
if(query){
def srchResults = searchableService.search(query, params)
def result = Country.executeQuery("select new map(a.name as name, a.datacenter as datacenter) from Country a where a.name like '%"+ params.q + "%'")
if (params.offset)
{
x = params.offset.toInteger()
y = Math.min(params.offset.toInteger()+9, result.size()-1)
} else
{
x = 0
size = result.size() - 1
y = Math.min(size, 9)
}
def q=params.q
[countryInstanceList: result.getAt(x .. y), countryInstanceTotal:result.size(), q:params.q]
}else{
redirect(action: "list")
}
}
ahora tengo otro problema, cuando pulso página siguiente, mis parametros del campo de búsqueda es la limpieza y el resultado es nulo. Intenté enviar el valor del campo como parámetro, pero creo que hago algo mal.
Mi página de búsqueda se ve así:
<g:form action="search">
<div class="search" >
Search Country
<g:hiddenField name="q" value="${params.q}" />
<input type="text" name="q" value="${params.q}" />
<input type="submit" value="Search"/>
</div>
</g:form>
...... ......
Emmmm, ¿por qué usa el motor de búsqueda y luego utiliza la consulta HQL? –