コードで liferay-ui:search-container を使用しました。
[次へ] をクリックするまで、検索結果は適切に表示されています。ポートレットが再ロードされ、ポートレットの最初のページが表示され、提示された検索結果が破棄されます。
ポートレットがリロードされた後でも検索結果を保持するにはどうすればよいですか?
コードで liferay-ui:search-container を使用しました。
[次へ] をクリックするまで、検索結果は適切に表示されています。ポートレットが再ロードされ、ポートレットの最初のページが表示され、提示された検索結果が破棄されます。
ポートレットがリロードされた後でも検索結果を保持するにはどうすればよいですか?
デフォルトの動作がニーズに合わない場合は、 iteratorURL 属性に値を指定できます。
次の例では、検索結果テーブルで [次へ] をクリックすると、ポートレットの proccesAction() メソッドが param1 と param2 で呼び出されます。
そのメソッドにロジックを追加して、検索結果を保持できます。
<%
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 ポートレットと、それらが URL を構築する方法をご覧ください。
[次へ] (または検索コンテナー内の他のページネーターのボタン) をクリックすると、ポートレットがレンダリングされます。search-container がポートレットの最初のページ (通常は portlet.xml に設定された view.jsp) にない場合、そこにリダイレクトされます (レンダリング フェーズのデフォルトの動作)。
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>