4

我在我的代码中使用了 liferay-ui:search-container。

搜索结果正在正确显示,直到我点击下一步。portlet 正在重新加载,这将我带到 portlet 的第一页,从而破坏了显示的搜索结果。

即使在重新加载 portlet 后,我​​如何保留搜索结果?

4

3 回答 3

4

如果 iteratorURL 属性的默认行为不符合您的需要,您可以为其赋值。

在以下示例中,当您在搜索结果表上单击“下一步”时,将使用 param1 和 param2 调用 portlet 的 proccesAction() 方法。

您可以向该方法添加逻辑以保留搜索结果。

<%
PortletURL urlPaginator=renderResponse.createActionURL();
urlPaginator.setParameter("param1", value1);
urlPaginator.setParameter("param2",value2);
%>

<liferay-ui:search-container iteratorURL="<%=urlPaginator%>">
于 2013-03-05T16:46:40.913 回答
1

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。

于 2013-03-01T16:04:50.353 回答
1

单击 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>
于 2018-03-12T09:55:18.710 回答