Spring mvc 从SpringMVC控制器中的liferay搜索容器访问分页信息
我正在用Liferay(在JSP中使用Liferay ui)和SpringMVC开发一个Portlet 我的JSP中有以下代码:Spring mvc 从SpringMVC控制器中的liferay搜索容器访问分页信息,spring-mvc,liferay,Spring Mvc,Liferay,我正在用Liferay(在JSP中使用Liferay ui)和SpringMVC开发一个Portlet 我的JSP中有以下代码: <liferay-ui:search-container delta="5" emptyResultsMessage="no books!"> <% List<Book> bookList = (List<Book>)request.getAttribute("bookList"); List<Boo
<liferay-ui:search-container delta="5" emptyResultsMessage="no books!">
<%
List<Book> bookList = (List<Book>)request.getAttribute("bookList");
List<Book> bookListView = ListUtil.subList(bookList, searchContainer.getStart(), searchContainer.getEnd());
%>
<liferay-ui:search-container-results results="<%= bookListView %>" total="${numberOfBooks}">
</liferay-ui:search-container-results>
...
...
我真的希望去掉JSP中的Java代码块,并将bookListView作为模型属性,就像上面代码中的numberOfBooks一样
但是,我找不到从Spring控制器访问searchContainer的方法来获取分页的开始和结束
有什么想法吗?谢谢 这可能适合您:
SearchContainer<Book> searchContainer = new SearchContainer<Book>(renderRequest, renderResponse.createRenderURL(), null, "there are no books");
在控制器中创建合适的SearchContainer并将其添加到模型中。正如Prakash K已经说过的,这个SearchContainer可能是这样的:
SearchContainer<Book> searchContainer = new SearchContainer<Book>(renderRequest, renderResponse.createRenderURL(), null, "there are no books");
<liferay-ui:search-container searchContainer="${model.searchContainer}" delta="${model.searchContainer.delta}" deltaParam="books_delta">
<liferay-ui:search-container-results results="${model.searchContainer.results}" total="${model.searchContainer.total}"/>
<liferay-ui:search-container-row
className="Book"
keyProperty="primaryKey"
modelVar="book">
...
</liferay-ui:search-container-row>
<liferay-ui:search-iterator searchContainer="${model.searchContainer}"/>
</liferay-ui:search-container>
SearchContainer SearchContainer=newsearchcontainer(renderRequest,renderResponse.createRenderURL(),null,“没有书”);
由于具有两个参数renderRequest和renderResponse,因此不能使用@ModelAttribute注释将SearchContainer添加为模型属性
然后JSP可以这样编写:
SearchContainer<Book> searchContainer = new SearchContainer<Book>(renderRequest, renderResponse.createRenderURL(), null, "there are no books");
<liferay-ui:search-container searchContainer="${model.searchContainer}" delta="${model.searchContainer.delta}" deltaParam="books_delta">
<liferay-ui:search-container-results results="${model.searchContainer.results}" total="${model.searchContainer.total}"/>
<liferay-ui:search-container-row
className="Book"
keyProperty="primaryKey"
modelVar="book">
...
</liferay-ui:search-container-row>
<liferay-ui:search-iterator searchContainer="${model.searchContainer}"/>
</liferay-ui:search-container>
...
属性deltaParam可用于配置使用的URL参数查看控制器中的此代码是否有帮助:
SearchContainer SearchContainer=request.getAttribute(“liferay ui:search:SearchContainer”)代码>我尝试过:@ModelAttribute(“bookList”)公共列表getBookList(RenderRequest请求)抛出系统异常{SearchContainer SearchContainer=(SearchContainer)请求。getAttribute(“liferay ui:search:SearchContainer”);但SearchContainer为空