我需要在单个JSP中使用两个不同的<liferay-ui:search-container>
标记。
如果我们使用两个<liferay-ui:search-container>
标签,则分页会产生问题:
<liferay-ui:search-container>
标签的第三页时,第二个<liferay-ui:search-container>
标签也移至第三页。 <liferay-ui:search-container>
标签,我在第3页上,并且单击第二个<liferay-ui:search-container>
标签的第2页,那么第二个标签将转到第2页,但第一个标签的结果将重置为第1页。 它们应该彼此独立。
环境:Liferay 6. +
最佳答案
我发现了两种不同的方法可以做到这一点:
curParam
标记中使用 <liferay-ui:search-container>
属性来实现,注意到以下代码中的curParam="folderCurParam"
和curParam="fileCurParam"
,我通过liferay的源代码docroot/html/portlet/document_library_display/view.jsp
和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>
docroot/html/portlet/journal/select_document_library.jsp
中再次发现了此问题,它使用 SearchContainer
constructor 来设置curParam
,注意文件夹和文件的"cur1"
参数是"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");
希望这对某人有帮助。
关于liferay - 如何在单个JSP中使用两个(多个)Liferay UI搜索容器标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522824/