2012-07-16 60 views
6

我想添加一些分頁的東西到我的grails應用程序。我有名單的行動,並在其中我這樣做: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) 
    } 

在GSP我寫了這個:

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

一切正常,一個在我的分貝5個對象,我只能看到3當在瀏覽器中打開一個gsp頁面,但是當我點擊Next來打開其他2個對象時,我看到了相同的3個對象。什麼是錯的,我必須做什麼?

回答

8

您需要將偏移到您的來電list

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

謝謝你,它的工作。但我可以使用一些CSS樣式到g:paginate標籤,以及如何? – 2012-07-16 15:17:48

+1

@Jack:是的,查看源代碼來檢查grails放入html的類,並將這些類用於選擇器。 (無論是在main.css中還是hack) – 2012-07-16 15:19:53

1

1)如果你使用的是標準的查詢,則:

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)如果你正在使用GORM查詢,則:

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