2014-04-09 1 views
4

나는 Grails의에 안돼서 매김 난, 난 내의 index.gsp에 검색 폼이 Grails의 문서에있는 Grails의 페이지 매김 태그를 사용하려고했습니다 params.max을 통과하고 난 책을 나열하는 내가 쿼리를 포함하는 인덱스 액션이 단 하나 개의 액션 인덱스사용하는 방법 Grails는

을 사용하고 를 params.offset합니다 :

params.max = 10 
params.offset = 0 
def author=params.author // i get the input search params 
def max = 10 
def offset = 0 
if(params.max){ 
    max = params.max 
} 
if(params.offset){ 
    offset = params.offset 
} 

def bookPagin=Book.createCriteria().list {  
    eq("author", author)} 
    maxResults(max) 
    firstResult(offset) 
} 

이 내 지수의 PAGINATE 태그입니다. gsp :

<g:paginate controller="displayBook" action="index" total="${bookPagin.size()}" params="[author:author]"/> 

이제이 코드는 첫 번째 10 개의 결과를 표시하지만 두 번째 페이지를 클릭하면GET 요청에서 작성자 매개 변수를 pasing하고 있지만 입력 된 매개 변수는 사용하지 않습니다. 다른 해결책이 있습니까?

+0

params 속성은 나에게 잘 보입니다. 여러분은'model' 속성을 설정하는 컨트롤러 메소드의 나머지 부분을 포함시키지 않았습니다. 아마도'author'가 올바른 변수 이름인지 점검 할 것입니다 - 저는 보통'[author : params.author]'를 사용합니다. 참고로,'action'과'controller' 속성은 현재 페이지와 동일하다면 생략 할 수 있습니다. – nickdos

답변

4

당신의 GSP에
def searchString = "${params.author}%" 
def searchResults = Book.findAllByAuthorLike(searchString, params) // max, offset automatically handled 
def total = Book.countByAuthorLike(searchString) 
render (model:[searchResults: searchResults, total: total]) 

, 당신의 searchResults 반복 ... 내가 어떻게 할 것입니다

<g:paginate controller="displayBook" action="index" total="${total}"/> 
+0

하나 이상의 검색 매개 변수가 있고 인덱스 작업에 있기 때문에 조건을 사용해야합니다 : 나는 indexList 작업에서 params를 다른 작업으로 보내는 모든 페이지 매김 예제에서 authorList [authorList : authorList] – manu

+0

과 같은 개체를 보내고 있습니다. g : paginate,하지만 단 하나의 작업 색인을 사용 중입니다 – manu

+0

다음 번에 실제 코드가 포함됩니다. 우리는 당신이 당신의 질문에 넣은 것만 벗어날 수 있습니다 – nickdos

2

grail을 사용하여 페이지 매김을 구현하는 것은 매우 쉽습니다.

당신은 지금 매김을 구현 할 수 있어야 통해 이동하시기 바랍니다.

<g:each var="book" in="${searchResults}">... 

을 한 후 다음과 같습니다 : 여기

+0

매우 도움이되지 않습니다. – manu

+0

@manu Amen. grails 워드 프로세서가 나를 격분하게합니다. – user2782001