我需要<liferay-ui:search-container>在一个JSP中使用两个不同的标签.
如果我们使用两个<liferay-ui:search-container>标签,则分页会出现问题:
当我单击第一个<liferay-ui:search-container>标签的第3页时,第二个<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>
Run Code Online (Sandbox Code Playgroud)我在liferay的源代码中再次发现了这个docroot/html/portlet/journal/select_document_library.jsp,它使用SearchContainer构造函数来设置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");
Run Code Online (Sandbox Code Playgroud)希望这有助于某人.
| 归档时间: |
|
| 查看次数: |
4430 次 |
| 最近记录: |