当前位置: 首页 > 知识库问答 >
问题:

Lifeay搜索容器分页问题

樊胜
2023-03-14

这是我的Liferay搜索容器代码:

MVC:BigInteger leaveTotalCount;
        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        PortletURL iteratorURL = PortletURLFactoryUtil.create(request, themeDisplay.getPortletDisplay().getId(),
                themeDisplay.getPlid(), PortletRequest.RENDER_PHASE);
        SearchContainer<LeaveDetailsWrapper> searchContainer = null;
        searchContainer = new SearchContainer<>(request, null, null, SearchContainer.DEFAULT_CUR_PARAM,
                SearchContainer.DEFAULT_DELTA, iteratorURL, null, LmsLeaveDashboardConstant.BLANK_STRING);
        List<LeaveDetailsWrapper> leaveDetails;
        try {
            searchContainer.setDeltaConfigurable(true);
            leaveDetails = leaveLocalService.getLeaveDetails(null, null, null, null,
                    LmsLeaveDashboardUtils.getEmpCode(request), searchContainer.getStart(), searchContainer.getEnd());
            log.info(leaveDetails);
            leaveTotalCount = leaveLocalService.getLeaveDetailsCount(null, null, null, null,
                    LmsLeaveDashboardUtils.getEmpCode(request), -1, -1);
            searchContainer.setEmptyResultsMessage("No Data Found..!");
            searchContainer.setTotal(leaveTotalCount.intValue());
            searchContainer.setIteratorURL(iteratorURL);

            searchContainer.setResults(leaveDetails);
        } catch (Exception e) {
            log.error("ERROR:IntrahrmsLmsLeaveDashboardWebPortlet leaveSearchContianer" + e);
        }
        return searchContainer;

jsp:

    <liferay-ui:search-container searchContainer="${leaveInfoContainer}" iteratorURL="${iteratorURL}">
            <liferay-ui:search-container-results
                results="${leaveInfoContainer.getResults()}" />

            <liferay-ui:search-container-row
                className="com.intrahrms.lms.service.leavecustom.model.LeaveDetailsWrapper"
                modelVar="LeaveDetails">

                <liferay-ui:search-container-column-text
                    value="${LeaveDetails.leaveTypeName} Leave " name="Leave Type" />
                <liferay-ui:search-container-column-text name="From Date">
                    <fmt:formatDate pattern="dd/MM/yyyy"
                        value="${LeaveDetails.fromDate}" type="date" />
                </liferay-ui:search-container-column-text>

                <liferay-ui:search-container-column-text name="To Date">
                    <fmt:formatDate pattern="dd/MM/yyyy" value="${LeaveDetails.toDate}"
                        type="date" />
                </liferay-ui:search-container-column-text>

                <liferay-ui:search-container-column-text
                    value="${LeaveDetails.totalDays}" name="Total Leave Days" />

                <liferay-ui:search-container-column-text name="Applied Date">
                    <fmt:formatDate pattern="dd/MM/yyyy"
                        value="${LeaveDetails.appliedDate}" type="date" />
                </liferay-ui:search-container-column-text>


                <liferay-ui:search-container-column-text
                    value="${LeaveDetails.leaveStatus} " name="Status" />

                <liferay-ui:search-container-column-text
                    value="${LeaveDetails.projectManagerId}" name="Reporting Manager" />


                <liferay-ui:search-container-column-jsp path="/action.jsp"
                    align="center" />

            </liferay-ui:search-container-row>

            <liferay-ui:search-iterator markupView="lexicon" />
        </liferay-ui:search-container>

问题是,当我更改分页或更改增量时,它会给我整个记录,而不是筛选记录。

共有1个答案

利永年
2023-03-14

您的搜索容器似乎做了正确的事情:

leaveDetails = leaveLocalService.getLeaveDetails(null, null, null, null,
                    LmsLeaveDashboardUtils.getEmpCode(request), searchContainer.getStart(), searchContainer.getEnd());

想想看:您刚刚创建了实例,您期望开始和结束时是什么?

创建容器时,您告诉了它应该使用的参数,但这些参数并没有在JSP上设置,例如:

<liferay-ui:search-container emptyResultsMessage="there-are-no-file-entries" iteratorURL="${filesRenderUrl}" delta="${files_searchDelta}" total="${files_searchTotal}" curParam="files" deltaParam="files">

底线是,如果您想在这样的java方法中控制您的搜索容器,您需要采取相应的行动来设置您的结果:

private static int getStart( int current, int delta ) {

    return ( current - 1 ) * delta;
}

private static int getEnd( int first, int delta ) {

    return first + delta;
}
 类似资料:
  • 我在我的代码中使用了riveray-ui:搜索容器。 搜索结果正在正确显示,直到我单击下一步。portlet正在重新加载,这将把我带到portlet的第一页,丢弃呈现的搜索结果。 即使在重新加载portlet之后,我如何保留搜索结果?

  • 我正在使用在Liferay 6.1中开发一个portlet。当我使用 Eclipse总是向我显示以下警告消息 SearchContainer是原始类型。泛型类型的引用 JSP代码片段: 我搜索了很多例子。我已经将它们导入我的工作区。当使用搜索容器标记时,它们也会显示相同的警告消息。 例如这个portlet:docroot/html/eventlisting/view中的事件列表portlet。js

  • 大家好,根据搜索框中的conatiner图像在这里!我只是想问当用户在搜索框中键入一个名称时,应该显示特定的字段。我把我的视图。JSP代码也在这里吗?? vuew.jsp<%@page import=“com.privery.servicebuilder.service.blobdesolocalserviceutil”%><%@taglib uri=“http://java.sun.com/po

  • 我已经使用Liferay搜索容器来显示自定义实体的数据,它正在工作。我有另一个portlet,其中数据来自RESTAPI,所以有没有任何方法可以使用搜索容器?或者我需要使用datatable。我的REST API有分页和无分页。

  • 我到处找了又找,但还是找不到解决问题的办法。我还不熟悉php和codeigniter,所以可能我已经错过了答案,但不管怎样,下面是我要做的。 这是我的控制器(c_index.php)-调用搜索函数并对结果数组执行分页。 这是我的视图(index.php)-基本上只是显示分页结果 我的模型(m_search.php)-基本上搜索数据库并返回结果数组。 类M_搜索扩展了CI_模型{ 现在我的问题是保留

  • 搜索页主要是对场景内模型的搜索。 在搜索框内输入关键字,可以显示出场景内所有相关模型的列表。点击列表中模型名称,即可定位到搜索出的模型,如下图所示。