首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >救生筏搜索容器分页问题

救生筏搜索容器分页问题
EN

Stack Overflow用户
提问于 2018-06-18 10:10:56
回答 1查看 1K关注 0票数 0

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

代码语言:javascript
复制
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>

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

EN

回答 1

Stack Overflow用户

发布于 2018-06-21 17:41:56

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

代码语言:javascript
复制
leaveDetails = leaveLocalService.getLeaveDetails(null, null, null, null,
                    LmsLeaveDashboardUtils.getEmpCode(request), searchContainer.getStart(), searchContainer.getEnd());

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

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

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

总之,如果您想在java方法中控制搜索容器,则需要相应地设置结果:

代码语言:javascript
复制
private static int getStart( int current, int delta ) {

    return ( current - 1 ) * delta;
}

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

    return first + delta;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50907120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档