Alfresco webscript(js)和分页

时间:2015-09-15 08:49:55

标签: pagination alfresco alfresco-webscripts

我对使用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可以给我这个查询)。 我需要这个:

  1. 知道是否有更多结果
  2. 知道有多少页面的结果是持久的
  3. 我正在使用第一个需要的解决方法:我正在查询(maxItems + 1),并且只显示maxItems。如果我有maxItems + 1,我知道有更多的结果。但这并没有给我总结果。

    你有什么想法吗?

2 个答案:

答案 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中,您可以找到有关分页的更多信息。