2012-07-16 28 views
6

Quiero agregar algunas cosas de paginación a mi aplicación Grails. Tengo la acción lista y en ella hice esto:Paginación en Grails

if(!params.max){ 
params.max = 3 
} 
    def query = Profile.where { 
     userType == "F" 
    } 
    def freelancers = query.list(sort:"firstName", max:params.max) 
    if(freelancers) { 
     def freelancersCount = query.count() 
     return[freelancer:freelancers, fCount:freelancersCount] 
    } else { 
     response.sendError(404) 
    } 

en gsp me escribió esto:

<div id="paginate"> 
    <g:paginate controller="freelancers" action="list" total="${fCount}"/> 
</div> 

todo está bien, el tener un 5 objetos en mi db y puedo ver sólo el 3 cuando abro una página gsp en el navegador, pero cuando hago clic en el siguiente para abrir otros 2 objetos, veo los mismos 3 ones. ¿Qué está mal y qué debo hacer?

Respuesta

8

lo necesario para pasar el valor de desviación en su llamada a list:

def freelancers = query.list(sort:"firstName", offset:params.offset, 
max:params.max) 
+1

gracias, está funcionando. pero, ¿puedo usar algunos estilos CSS en la etiqueta g: paginate y cómo? –

+1

@Jack: sí, mira la fuente para ver las clases que grails pone en el html, y usa esas clases para tus selectores. (o eso o hackear en main.css) –

1

1) Si está utilizando los criterios de consulta a continuación:

params.max = Math.min(max ?: 10, 100) 
Integer offset = params.offset as Integer ?: 0 
List userInstanceList = User.createCriteria().list(max:params.max,offset:offset) { 
      or { 
       ilike('name', "%${name}%") 
       ilike('email', "%${email}%") 
      } 
      order('dateCreated', 'desc') 
     } 

2) Si está utilizando consulta GORM a continuación:

params.max = Math.min(max ?: 10, 100) 
Integer offset = params.offset as Integer ?: 0 
List<User> userList=User.list(max:params.max,offset:offset)