Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails2中的PagedResultList问题_Grails_Groovy_Grails 2.0 - Fatal编程技术网

Grails2中的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

我之前使用的是1.3.7,PagedResultList的构造函数在该PagedResultList构造函数接受列表中。所以我的代码是

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)