Tôi có tên miền "country" và trên list.gsp tôi có khối tìm kiếm với trường nhập. Vấn đề đầu tiên là khi tôi cố gắng sử dụng paginate trên danh sách của tôi luôn luôn cho thấy tất cả kết quả, trong trường hợp này tôi fount các giải pháp và tôi đã gửi chỉ 10 giá trị để hiển thị (nếu bạn biết một giải pháp xin vui lòng cho tôi biết). Tìm kiếm của tôi trông như sau:grails pagination của các kết quả tìm kiếm
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")
}
}
Bây giờ tôi có một vấn đề khác, khi tôi nhấn trang tiếp theo thì tham số của tôi từ trường tìm kiếm sẽ được làm sạch và kết quả là không. Tôi đã cố gắng gửi giá trị trường như thông số nhưng tôi làm điều gì đó sai.
trang tìm kiếm của tôi trông giống như:
<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, tại sao bạn sử dụng công cụ tìm kiếm và sau đó sử dụng truy vấn HQL? –