Liferay搜索容器分页

时间:2013-02-28 07:56:35

标签: pagination liferay

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

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

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

3 个答案:

答案 0 :(得分:4)

如果iteratorURL属性的默认行为不符合您的需要,您可以给它一个值。

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

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

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

<liferay-ui:search-container iteratorURL="<%=urlPaginator%>">

答案 1 :(得分:1)

当您单击“下一步”和“上一步”时,liferay搜索容器将处理您传递的参数。

请注意“下一个”和“上一个”链接的网址。

例如,URL将包含以下参数:

  

p_p_id = 15&安培; p_p_lifecycle = 0&安培; p_p_state =最大化&安培; p_p_mode =视图&安培; doAsGroupId = 10194&安培; refererPlid = 12110&安培; _15_struts_action =%2Fjournal%2Fview&安培; _15_tabs1 =模板&安培; _15_delta = 20&安培; _15_keywords =安培; _15_advancedSearch =假安培; _15_andOperator =真安培; _15_description =安培; _15_groupIds = 10194&安培; _15_name =安培; _15_structureId =安培; _15_searchTemplateId =安培; _15_resetCur =假安培; CUR = 2

Liferay搜索容器使用delta,cur参数导航到下一组结果。

有关更多信息,请查看使用搜索容器的liferay portlet以及它们如何构建URL。

答案 2 :(得分:0)

单击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>