Spring mvc 从SpringMVC控制器中的liferay搜索容器访问分页信息

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(在JSP中使用Liferay ui)和SpringMVC开发一个Portlet

我的JSP中有以下代码:

<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为空