hippo cms- количество документов ограничено 5

Я использую бегемотический cms для одного из моих проектов, и у него есть тип документа для хранения контактных данных. В моем CMS-хранилище есть 9 контактных документов (все опубликованы), однако в моем приложении отображаются только 5, другие 4 не отображаются. Если я изменю порядок отображения документа, то невидимый документ отобразится в приложении, но другой документ исчезнет. Там нет предела, используемого в JSP или в CMS. Может кто-нибудь сказать мне, почему это может происходить?

<sv:node xmlns:sv="http://www.jcp.org/jcr/sv/1.0" sv:name="home">
  <sv:property sv:name="jcr:primaryType" sv:type="Name">
    <sv:value>hst:component</sv:value>
  </sv:property>
  <sv:property sv:name="hst:referencecomponent" sv:type="String">
    <sv:value>hst:pages/standard</sv:value>
  </sv:property>
  <sv:node sv:name="main">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
      <sv:value>hst:component</sv:value>
    </sv:property>
    <sv:node sv:name="content">
      <sv:property sv:name="jcr:primaryType" sv:type="Name">
        <sv:value>hst:component</sv:value>
      </sv:property>
      <sv:property sv:name="hst:referencecomponent" sv:type="String">
        <sv:value>hst:components/content</sv:value>
      </sv:property>
      <sv:property sv:name="hst:template" sv:type="String">
        <sv:value>home.main.content</sv:value>
      </sv:property>
    </sv:node>
    <sv:node sv:name="lists">
      <sv:property sv:name="jcr:primaryType" sv:type="Name">
        <sv:value>hst:containercomponent</sv:value>
      </sv:property>
      <sv:property sv:name="hst:componentclassname" sv:type="String">
        <sv:value>org.hippoecm.hst.pagecomposer.builtin.components.StandardContainerComponent</sv:value>
      </sv:property>
      <sv:property sv:name="hst:xtype" sv:type="String">
        <sv:value>HST.UnorderedList</sv:value>
      </sv:property>

      <sv:node sv:name="contacts">
        <sv:property sv:name="jcr:primaryType" sv:type="Name">
          <sv:value>hst:containeritemcomponent</sv:value>
        </sv:property>
        <sv:property sv:name="hst:componentclassname" sv:type="String">
          <sv:value>org.rf.online.components.Contacts</sv:value>
        </sv:property>
        <sv:property sv:name="hst:iconpath" sv:type="String">
          <sv:value>images/catalog-list.png</sv:value>
        </sv:property>
        <sv:property sv:name="hst:label" sv:type="String">
          <sv:value>Contacts</sv:value>
        </sv:property>
        <sv:property sv:name="hst:parameternames" sv:type="String" sv:multiple="true">
          <sv:value>title</sv:value>
          <sv:value>scope</sv:value>
          <sv:value>docType</sv:value>
          <sv:value>sortBy</sv:value>
          <sv:value>backgroundColor</sv:value>
          <sv:value>sortOrder</sv:value>
          <sv:value>secondSortBy</sv:value>
          <sv:value>secondSortOrder</sv:value>
          <sv:value>pageSize</sv:value>
        </sv:property>
        <sv:property sv:name="hst:parametervalues" sv:type="String" sv:multiple="true">
          <sv:value>contact</sv:value>
          <sv:value>/</sv:value>
          <sv:value>rfonline:contactsdocument</sv:value>
          <sv:value>rfonline:contactRegionOrder</sv:value>
          <sv:value>light</sv:value>
          <sv:value>ascending</sv:value>
          <sv:value>rfonline:contactOrder</sv:value>
          <sv:value>ascending</sv:value>
          <sv:value>21</sv:value>
        </sv:property>
        <sv:property sv:name="hst:template" sv:type="String">
          <sv:value>standard.main.contacts</sv:value>
        </sv:property>
        <sv:property sv:name="hst:xtype" sv:type="String">
          <sv:value>HST.Item</sv:value>
        </sv:property>
      </sv:node>
    </sv:node>
  </sv:node>
</sv:node>

Вот мой home.xml с атрибутом pageSize, установленным на 21. Я увеличил его до 50, но все равно документы не отображаются.

Атрибут pageSize не используется в Contacts.java, однако класс Contacts расширяет класс BaseComponent, в котором используется pageSize. Вот фрагмент кода из классов Contacts и BaseComponent.

    @ParametersInfo(type = ContactsInfo.class)
    public class Contacts extends BaseComponent{
        //code
    }

public abstract class BaseComponent extends BaseHstComponent {

public static final Logger log = LoggerFactory.getLogger(BaseComponent.class);

protected void createAndExecuteSearch(final HstRequest request, final GeneralParamsInfo info, final HippoBean scope, final Map<String,Object> queryMap) throws HstComponentException {
        int pageSize = info.getPageSize();
        if (pageSize == 0) {
            log.warn("Empty pageSize or set to null. This is not a valid size. Use default size");
        }
        try {
            HstQuery hstQuery = getQueryManager(request).createQuery(scope, filterClass, true);
       hstQuery.setLimit(pageSize);
       hstQuery.setOffset(pageSize * (crPage - 1));
          if (sortBy != null && !"".equals(sortBy)) {
            if (sortOrder == null || "".equals(sortOrder)||"descending".equals(sortOrder)) {
                    hstQuery.addOrderByDescending(sortBy);
                } else {
                    hstQuery.addOrderByAscending(sortBy);
                }
            }
            String querys = null;           
    }           
    final Object attribute = request.getAttribute("isPageableCollection");
    final Boolean isPageableCollection = (Boolean) (attribute != null ? attribute : false);
            if (info instanceof PageableListInfo && ((PageableListInfo) info).isPagesVisible()) {
                 if (result.getTotalSize() > pageSize) {
                    List<Integer> pages = new ArrayList<Integer>();
                    int numberOfPages = result.getTotalSize() / pageSize;
                    if (result.getTotalSize() % pageSize != 0) {
                        numberOfPages++;
                    }
                    for (int i = 0; i < numberOfPages; i++) {
                        pages.add(i + 1);
                    }
                    request.setAttribute("pages", pages);
                }
            }

        } catch (QueryException e) {
            throw new HstComponentException("Exception occured during creation or execution of HstQuery. ", e);
        }
    }
}

И вот мой интерфейс ContactInfo:-

public interface ContactsInfo extends GeneralParamsInfo {

     @Parameter(name = "scope", defaultValue="/", displayName = "Scope")
     @DocumentLink(docType = "rfonline:contactsdocument")
        String getScope();

     @Override
    @Parameter(name = "docType", displayName = "Document Type", defaultValue="rfonline:contactsdocument")
    String getDocType();

     @Parameter(name = "backgroundColor", defaultValue="light", displayName = "Background Color")
     String getBackgroundColor();

}

1 ответ

Возможно, для параметра "pageSize" установлено значение 5. Пожалуйста, проверьте, не аннотирован ли ваш компонент @ParametersInfo, указывающим на интерфейс информации параметров со значением размера страницы по умолчанию, или же ваш компонент считывает / устанавливает значение размера страницы во время поиска.

Другие вопросы по тегам