Grails2中的PagedResultList问题
我之前使用的是1.3.7,PagedResultList的构造函数在该PagedResultList构造函数接受列表中。所以我的代码是Grails2中的PagedResultList问题,grails,groovy,grails-2.0,Grails,Groovy,Grails 2.0,我之前使用的是1.3.7,PagedResultList的构造函数在该PagedResultList构造函数接受列表中。所以我的代码是 def result = [...] def pagedResult = new PagedResultList(result) 现在构造函数更改为 PagedResultList(GrailsHibernateTemplate template, Criteria crit) 您能帮我将结果列表转换为2.x中的PagedResultList吗?Paged
def result = [...]
def pagedResult = new PagedResultList(result)
现在构造函数更改为
PagedResultList(GrailsHibernateTemplate template, Criteria crit)
您能帮我将结果列表转换为2.x中的PagedResultList吗?
PagedResultList
在Grails 2中似乎已被更改,以在第一次访问时延迟计算totalCount
,而不是在最终可能不需要时必须提前计算计数。但由于以下原因,您只需使用4行Groovy就可以编写自己的drop-in替换程序:
转换所做的是自动将委托类型(在本例中为
List
)的所有方法添加到目标类型(在本例中为MyPagedResultList
),通过委托到委托对象来实现。因此,它使MyPagedResultList
实现List
接口,而无需手动写出所有相关方法。PagedResultList
在Grails 2中似乎已被更改为在第一次访问时延迟计算totalCount
,而不是在访问时提前计算计数最终可能不需要。但由于以下原因,您只需使用4行Groovy就可以编写自己的drop-in替换程序:
转换所做的是自动将委托类型(在本例中为
List
)的所有方法添加到目标类型(在本例中为MyPagedResultList
),通过委托到委托对象来实现。因此,它使得MyPagedResultList
实现List
接口,而无需手动写出所有相关方法。我认为PagedResultList
从来没有打算直接在GORM方法之外构建。与普通列表相比,PagedResultList
为您提供的唯一功能是totalCount
属性,而new PagedResultList(result)
无论如何都不会设置该属性。或者您之前是否在构建后设置了totalCount
?是的。我是在构造def pagedResult=new PagedResultList(result)pagedResult.totalCount=distinctCount[0]之后设置totalCount的。我不认为PagedResultList
是直接在GORM方法之外构造的。与普通列表相比,PagedResultList
为您提供的唯一功能是totalCount
属性,而new PagedResultList(result)
无论如何都不会设置该属性。或者您之前是否在构建后设置了totalCount
?是的。我在构建def pagedResult=new PagedResultList(result)pagedResult.totalCount=distinctCount[0]后设置了totalCount。这一切正常。您能详细说明一下为什么使用委托注释吗?@user1298426我添加了更多的细节,以及Groovy文档页面的链接。这是可以预期的。您能详细说明一下为什么使用委托注释吗?@user1298426我添加了更多的细节,以及Groovy文档页面的链接。
class MyPagedResultList {
@Delegate List theList
int totalCount
}
// create one using new MyPagedResultList(theList:result, totalCount:total)