我在我的代码中使用了liferay-ui:search-container。
搜索结果正常显示,直到我点击下一步。正在重新加载portlet,这会将我带到portlet的第一页,从而破坏了显示的搜索结果。
即使重新加载portlet后,如何保留搜索结果?
答案 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>