0

検索コンテナーのページネーションで Ajax 呼び出しを試みています。同じページに複数のポートレットがあるため、ページネーションを行うたびに各ポートレットが強制的にレンダーを呼び出す必要はありません。

2つの解決策が考えられますが、私はいくつかの問題に直面しています。それを解決するのを手伝ってください。

1) ポートレットのライフサイクルを 0 から 2 に変更して、Liferay Search Container Pagination URL を編集する方法を教えてください。フックの作成方法

2) jsCall<liferay-ui:page-iterator/>という属性があるというタグがあります。ページをリロードせずにページネーションに使用されます。使い方がわかりません。

2番目のオプションを使用して解決できる場合は、非常に役立ちます。

ありがとうございました。

4

2 に答える 2

0

はい、私はそれを使用する方法を知っています。

それを行う例を示します。

<portlet:renderURL var="manageRelationsURL"
windowState="<%=LiferayWindowState.NORMAL.toString()%>">
<portlet:param name="action" value="manageRelations" />
</portlet:renderURL>

<%PortletURL iteratorURL = renderResponse.createRenderURL();
iteratorURL.setParameter("action", "manageRelations");
%>

    <%
PortalPreferences portalPrefs = PortletPreferencesFactoryUtil.getPortalPreferences(request);
String orderByCol = ParamUtil.getString(request, "orderByCol");
String orderByType = ParamUtil.getString(request, "orderByType");


if (Validator.isNotNull(orderByCol) && Validator.isNotNull(orderByType)) {
    portalPrefs.setValue("NAME_SPACE", "order-by-col", orderByCol);
    portalPrefs.setValue("NAME_SPACE", "order-by-type", orderByType);

} else {
    orderByCol = portalPrefs.getValue("NAME_SPACE", "order-by-col", "domainLabel");
    orderByType = portalPrefs.getValue("NAME_SPACE", "order-by-type", "asc");

}
 %>
<div style="">
<aui:form>
<liferay-ui:search-container delta="20" iteratorURL="<%=iteratorURL%>" emptyResultsMessage="There were not any match." orderByCol="<%= orderByCol %>" orderByType="<%= orderByType %>">
<liferay-ui:search-form
    page="/WEB-INF/jsp/localAdministration/relations/search.jsp"
    searchContainer="<%= searchContainer %>"
    servletContext="<%= this.getServletConfig().getServletContext() %>"
    showAddButton="true" />
    <liferay-ui:search-container-results>

        <%
        List<RelationInstance> relationList = UtilsAdministration.getRelationListCache(themeDisplay.getUserId(),0, UtilsAdministration.getRelationListCacheSize(themeDisplay.getUserId()));
        Collections.sort(relationList,RelationsComparator.getRelationsOrderByComparator(orderByCol, orderByType));

        results = ListUtil.subList(relationList, searchContainer.getStart(),   
                 searchContainer.getEnd());

           if(relationList.size()<searchContainer.getEnd()){
               results = ListUtil.subList(relationList, searchContainer.getStart(),   
                       relationList.size());
               total = relationList.size();
           }else{
               results = ListUtil.subList(relationList, searchContainer.getStart(),   
                       searchContainer.getEnd());
               total = relationList.size();
           }

           pageContext.setAttribute("results", results);
           pageContext.setAttribute("total", total);
        %>
        </liferay-ui:search-container-results>


    <liferay-ui:search-container-row className="RelationInstance" modelVar="aRelationInstance">
        <liferay-ui:search-container-column-text name="First" value="<%=aRelationInstance.getFirstLabel()%>" orderable="<%= true %>" orderableProperty="domainLabel"/>
        <liferay-ui:search-container-column-text name="Second" value="<%=aRelationInstance.getSecondLabel()%>" orderable="<%= true %>" orderableProperty="relationLabel"/>
        <liferay-ui:search-container-column-text name="Third" value="<%=aRelationInstance.getRangeLabel()%>" orderable="<%= true %>" orderableProperty="rangeLabel"/>
        <liferay-ui:search-container-column-jsp align="right" name="Acciones" path="/WEB-INF/jsp/localAdministration/relations/actionRelationButton.jsp"/>  
    </liferay-ui:search-container-row>
    <liferay-ui:search-iterator />
</liferay-ui:search-container>
</aui:form>
</div>

この場合、DB ではなく EhCache から反復するリストを取得します。

IteratorURL には、呼び出しているページと同じ URL が含まれている必要があります。

お役に立てば幸いです。

于 2016-11-16T11:28:18.250 に答える
0

かなから、

その問題に直面するたびに、手動でページネーションを実装しなければなりませんでした。

おそらくこの問題の解決策になるかもしれませんが、それが存在するかどうかはわかりません。この目的のために、独自のページネーションを作成する時間を短縮できます。

お役に立てば幸いです。

幸運をお祈りしています

于 2016-11-02T11:32:30.970 に答える