在 liferay 中动态更改搜索容器结果

Dynamically change search container results in liferay

我认为我的问题与此类似How to search inside of a search container in liferay

所以页面加载有一个 jsp 变量设置

<liferay-ui:search-container-results>
    <%                  
    results = ListUtil.subList(myList, searchContainer.getStart(), searchContainer.getEnd());
    total = myList.size();
    pageContext.setAttribute("results", results);
    pageContext.setAttribute("total", total);
    %>
</liferay-ui:search-container-results>

有没有办法通过ajax动态改变myList? 在后端,我将过滤它并返回一个 json 对象来替换 myList 变量。

希望得到有关如何替换 myList 变量并因此刷新 searchContainer 的帮助table

虽然问题看起来有关联,但你想做一些与他不同的事情。

所以回答你的问题,你想的实现是做不到的。原因:

myList变量是一个存在于服务器端的变量。您的 JavaScript 代码在客户端运行。您无法使用 JavaScript.

操作 java 变量的内容

可以做的是:

检索到 JSON 响应后,删除搜索容器中结果行的 HTML 并将其替换为在 [=34] 中生成的 HTML =].这可能有点棘手,因为您想准确复制 liferay-ui:search-container-results 标签生成的 HTML,否则您的样式会被破坏。

除此之外还有一种方法。获取所有搜索结果并显示它们,然后通过 JavaScript 完成剩下的工作(分页、在 table 中搜索等) 例如你可以使用这个: https://www.datatables.net/

https://mottie.github.io/tablesorter/docs/example-pager-filtered.html

请注意,如果您达到显示的条目的临界点,这可能会有点慢;)