2015-06-26 53 views
0

我認爲我的問題類似於此How to search inside of a search container in liferay在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表

回答

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

被警告,如果達到顯示的條目的臨界點,這可能會稍微慢一些;)

+0

嗯,但我相信html不包括由於分頁而不在頁面中的列表項目? – MerC

+0

你就在這裏。但是你對這些元素有什麼要求?也許你應該在你正在嘗試做的事情中得到更具體的... 你說,你想替換變種。我以爲你想改變顯示的項目。這是它是如何完成的;)老實說,我不明白你爲什麼要求這些元素... – Gevatterjan

+0

我想使用輸入文本框,用戶將鍵入文本,該文本過濾包含文本的列表項。就像autoComplete的工作方式一樣。我只是試圖探索是否有可能,但如果它是由我決定的,我只是使用瀏覽器的ctrl + f。 – MerC