【问题标题】:Dynamically change search container results in liferay在 liferay 中动态更改搜索容器结果
【发布时间】:2015-06-26 09:22:26
【问题描述】:

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

所以页面onload有一个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 表方面得到帮助

【问题讨论】:

    标签: ajax liferay liferay-6


    【解决方案1】:

    即使这些问题看起来相关,你也想做一些与他不同的事情。

    因此,要回答您的问题,您正在考虑的实施无法完成。原因:

    myList 变量是存在于服务器端的变量。您的 JavaScript 代码在客户端运行。您无法使用 JavaScript 操作 java 变量的内容。

    可以做到以下几点:

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

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

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

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

    【讨论】:

    • hmm,但是我相信html不包含由于分页而不在页面中的列表项?
    • 你就在这里。但是你想要这些元素做什么?也许您应该更具体地了解您正在尝试做的事情......您说,您想替换 var。我以为您想更改显示的项目。这就是它的完成方式;)老实说,我不明白你为什么要这些元素......
    • 我正在尝试使用输入文本框,用户将输入文本,这会过滤包含文本的列表项。就像自动完成的工作原理一样。我只是想探索是否可能,但如果由我决定,我会使用浏览器的 ctrl+f。
    • 更新了我的答案。相关部分在答案的底部。
    • 好像.. 有机会试试看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2019-12-28
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多