How to use two (multiple) Liferay UI Search Container tags in a single JSP
liferay, liferay-6
Solution
I found two different ways to do this:
This is possible through the use of `curParam` attribute in `<liferay-ui:search-container>` tag, noticed the `curParam="folderCurParam"` and `curParam="fileCurParam"` in the following code, I found this way through liferay's source code `docroot/html/portlet/document_library_display/view.jsp` and `docroot/html/portlet/document_library_display/view_file_entries.jspf`:
<liferay-ui:search-container
curParam="folderCurParam"
emptyResultsMessage="no-folders-to-display"
iteratorURL="<%= portletURL %>"
delta="10">
<liferay-ui:search-container-results
results="<%=folderResults %>"
total="<%= folderTotal %>" />
<liferay-ui:search-container-row
className="com.liferay.portal.kernel.repository.model.Folder"
keyProperty="userId"
modelVar="folder">
<liferay-ui:search-container-column-jsp align="left"
path="/html/documentdisplay/folder_search_results.jsp" />
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</liferay-ui:search-container>
<liferay-ui:search-container
curParam="fileCurParam"
emptyResultsMessage="no-files-to-display"
iteratorURL="<%= portletURL %>"
delta="10">
<liferay-ui:search-container-results
results="<%=fileResults %>"
total="<%= fileTotal %>" />
<liferay-ui:search-container-row
className="com.liferay.portal.kernel.repository.model.FileEntry"
keyProperty="userId"
modelVar="fileEntry">
<liferay-ui:search-container-column-jsp align="left"
path="/html/documentdisplay/files_search_results.jsp" />
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</liferay-ui:search-container>
I found this again in liferay's source code `docroot/html/portlet/journal/select_document_library.jsp`, this uses the `SearchContainer` constructor to set the `curParam`, notice the parameter `"cur1"` for folders and for files it is `"cur2"`:
// for folders
SearchContainer searchContainer = new SearchContainer(renderRequest, null, null, "cur1", SearchContainer.DEFAULT_DELTA, portletURL, headerNames, "there-are-no-folders");
// for files
searchContainer = new SearchContainer(renderRequest, null, null, "cur2", SearchContainer.DEFAULT_DELTA, portletURL, headerNames, "there-are-no-documents-in-this-folder");
Hope this helps someone.
Problem
I need to use two different `<liferay-ui:search-container>` tags in a single JSP. The pagination gives issues if we use two `<liferay-ui:search-container>` tags: When I click on the 3rd page of the first `<liferay-ui:search-container>` tag the second `<liferay-ui:search-container>` tag also moves to the third page. Also if for the first `<liferay-ui:search-container>` tag I am on page-3 and I click page-2 of second `<liferay-ui:search-container>` tag then the second tag goes to page-2 but the first tag results is reset to page-1. They should be independent of each other. Environment: Liferay 6.+