我正在尝试使用findAll过滤grails中的集合,因此我只在其“estado”字段中获取具有特定值的实例。
我有这样的事情:
trabajos.findAll({it.estado.equals( "Pago")})
问题是我不知道如何对返回的集合进行分页 我看了一下grails文档,发现了这个
Book.findAll(Map queryParams, Closure whereCriteria)
但是当我尝试时
trabajos.findAll([offset: 0], {it.estado.equals("Pago")})
我收到以下异常
No signature of method: java.util.ArrayList.findAll() is applicable for argument types: (java.util.LinkedHashMap, com.publidirecta.PersonalController$_show_closure2) values: [[offset:0], com.publidirecta.PersonalController$_show_closure2@a6bdb0]
Possible solutions: findAll(), findAll(), findAll(groovy.lang.Closure), findAll(groovy.lang.Closure), find(), find()`
这是为什么要实现某种分页,为什么或者我必须手动完成?
答案 0 :(得分:0)
我猜你有两件事:grails和groovy
Book.findAll(Map queryParams, Closure whereCriteria)
- 是数据库中的查找器,它是grails的东西,你可以传递max param。
但是在trabajos.findAll({it.estado.equals( "Pago")})
中你试图找到列表。这是很时髦的事情。详情请见here和here
如果您尝试从数据库中获取对象,请像这样使用
Book.findAll(Map queryParams, Closure whereCriteria)
。
如果是对象列表,请使用以下内容:
def filtered = trabajos.findAll({it.estado.equals( "Pago")})
def result = filteredList[offset..offset+max < filtered.size() ? offset+max : filtered.size()]