2015-09-15 3 views
0

У меня вопрос о хорошем способе использования разбивки на страницы с Alfresco. Я знаю документацию (https://wiki.alfresco.com/wiki/4.0_JavaScript_API#Search_API) и успешно использую часть запроса. Я имею в виду, что я использую параметры maxItems и skipCount, и они работают так, как я хочу. Это пример запроса, что я делаю:Alfresco webscript (js) и разбиение на страницы

var paging = 
    { 
    maxItems: 100, 
    skipCount: 0 
    }; 
    var def = 
    { 
    query: "cm:name:test*" 
    page: paging 
    }; 
    var results = search.query(def); 

Проблема заключается в том, что, если я получаю количество результатов, которые я хочу (100, например), я не знаю, как получить maxResults моего запроса (я имею в виду общую сумму результата, которую Alfresco может дать мне с этим запросом). И мне нужно это:

  1. знать, если есть больше результатов
  2. знать, сколько страниц результатов длительны

Я использую обходной путь для первой необходимости: Я выполняя запрос для (maxItems + 1) и показывая только maxItems. Если у меня есть maxItems + 1, я знаю, что результатов больше. Но это не дает мне общего результата.

У вас есть идея?

ответ

1

С объектом поиска javascript вы не можете узнать, есть ли больше предметов. Этот объект javascript поддерживается классом org.alfresco.repo.jscript.Search.java. Как видите, запрос возвращает результаты запроса без дополнительной информации. Сравните его с org.alfresco.repo.links.LinkServiceImpl, который дает вам результаты, завернутые в PagingResults.

Так как поиск Javacript объект не обеспечивает hasMoreItems Информация, вам необходимо выполнить некоторые обходной путь, например, первый запрос без ограничений, чтобы знать, в общей сложности, а затем применить нумерацию страниц, как хотелось бы.

0

Вы можете найти, сколько объектов было найдено по Вашему запросу просто вызывающему

results.length 

обратить внимание на то, что обычно запросы имеют сконфигурированный максимальный результат набора 1000 записей для экономии ресурсов. Вы можете изменить это значение, отредактировав файл <alfresco>/tomcat/webapps/alfresco/WEB_INF/classes/alfresco/repository.properties.

Итак, но это альтернатива вашему решению, вы можете запустить запрос без ограничений и получить реальное значение или максимальные настроенные результаты. Затем вы можете использовать это значение, чтобы определить, сколько страниц доступно, основываясь на количестве результатов для страницы. Затем динамически передайте номер текущей страницы строителю вашего запроса def, а переменная результатов будет содержать соответствующий кусок данных.

В этом SO post вы можете найти более подробную информацию о разбиении на страницы.

+1

После проверки, results.length не дает мне общее количество элементов, а количество элементов на моей «странице» (так максимум максимум). Возможно, я плохо понял ваш ответ. – Akah

Смежные вопросы