我在我的代码中使用了 liferay-ui:search-container。
搜索结果正在正确显示,直到我点击下一步。portlet 正在重新加载,这将我带到 portlet 的第一页,从而破坏了显示的搜索结果。
即使在重新加载 portlet 后,我如何保留搜索结果?
我在我的代码中使用了 liferay-ui:search-container。
搜索结果正在正确显示,直到我点击下一步。portlet 正在重新加载,这将我带到 portlet 的第一页,从而破坏了显示的搜索结果。
即使在重新加载 portlet 后,我如何保留搜索结果?
如果 iteratorURL 属性的默认行为不符合您的需要,您可以为其赋值。
在以下示例中,当您在搜索结果表上单击“下一步”时,将使用 param1 和 param2 调用 portlet 的 proccesAction() 方法。
您可以向该方法添加逻辑以保留搜索结果。
<%
PortletURL urlPaginator=renderResponse.createActionURL();
urlPaginator.setParameter("param1", value1);
urlPaginator.setParameter("param2",value2);
%>
<liferay-ui:search-container iteratorURL="<%=urlPaginator%>">
Liferay 搜索容器处理您单击“下一步”和“上一个”时传递的参数。
请注意“下一个”和“上一个”链接的 URL。
例如,URL 将具有以下参数:
p_p_id=15&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&doAsGroupId=10194&refererPlid=12110&_15_struts_action=%2Fjournal%2Fview&_15_tabs1=templates&_15_delta=20&_15_keywords=&_15_advancedSearch=false&_15_andOperator=true&_15_description=&_15_groupIds=10194&_15_name=&_15_structureId=&_15_searchTemplateId=&_15_resetCur=false&cur=2
Liferay 搜索容器使用 delta、cur 参数导航到下一组结果。
有关更多信息,请查看使用搜索容器的 liferay portlet 以及它们如何构建 URL。
单击 NEXT(或搜索容器中的任何其他分页器按钮)会导致呈现 portlet。如果 search-container 不在 portlet 的第一页(通常是 view.jsp,在 portlet.xml 中设置),您将被重定向到那里(呈现阶段的默认行为)。
在 Liferay 6.2 中,您可以设置一个 iteratorUrl 并使用参数 mvcPath 指定您当前的 jsp。
<liferay-portlet:renderURL portletConfiguration="true" varImpl="iteratorURL">
<liferay-portlet:param name="mvcPath" value="something.jsp"/>
</liferay-portlet:renderURL>
<liferay-ui:search-container iteratorURL="<%=iteratorURL %>">
[...]
</liferay-ui:search-container>