我对使用Alfresco分页的好方法有疑问。 我知道文档(https://wiki.alfresco.com/wiki/4.0_JavaScript_API#Search_API) 我成功地使用了查询部分。 我的意思是我使用参数 maxItems 和 skipCount ,它们按照我想要的方式工作。 这是我正在进行的查询的示例:
var paging =
{
maxItems: 100,
skipCount: 0
};
var def =
{
query: "cm:name:test*"
page: paging
};
var results = search.query(def);
问题在于,如果我得到了我想要的结果数量(例如100),我不知道如何获得我的查询的 maxResults (我的意思是总数量)结果Alfresco可以给我这个查询)。 我需要这个:
我正在使用第一个需要的解决方法:我正在查询(maxItems + 1),并且只显示maxItems。如果我有maxItems + 1,我知道有更多的结果。但这并没有给我总结果。
你有什么想法吗?
答案 0 :(得分:1)
使用javascript搜索对象,您无法知道是否有更多项目。这个javascript对象由类org.alfresco.repo.jscript.Search.java支持。正如您所看到的,查询方法仅返回查询结果而没有任何额外信息。将其与org.alfresco.repo.links.LinkServiceImpl进行比较,后者会为您提供PagingResults中包含的结果。
因此,由于javacript搜索对象不提供 hasMoreItems 信息,您需要执行一些解决方法,例如首先查询无限制以了解总数,然后根据需要应用分页。
答案 1 :(得分:0)
您可以通过简单调用
找到查询找到的对象数results.length
注意通常查询配置的最大结果集为1000个条目以节省资源的事实。
您可以通过编辑<alfresco>/tomcat/webapps/alfresco/WEB_INF/classes/alfresco/repository.properties
文件来更改此值。
因此,除了您的解决方案之外,您可以启动没有约束的查询并获取实际值或配置的最大结果。 然后,您可以使用此值来设计可用的页数,以计算页面的结果数量为基础。 然后将当前页面的编号传递给查询def的构建器,结果变量将包含相应的数据块。
在此SO post中,您可以找到有关分页的更多信息。