愚昧如我,今天稍微接觸到頁籤(tabs)跟search container的關係,在此紀錄一下。

 

<%
if(courseListBySearch != null){
List<course_> list = ListUtil.subList(courseListBySearch, searchContainer.getStart(), searchContainer.getEnd());
Collections.sort(list, orderByComparator);
results = list;
total = courseListBySearch.size();
pageContext.setAttribute("results", results);
pageContext.setAttribute("total", total);
}

%>

 

要使用search container,我們必須先給他一個list,可是這個list在container移往下一頁之後,便會重整頁面導致剛才輸入的搜尋條件都消失。

如果在頁籤底下更是會跑回第一頁,所以我們必須把處理過後的list放到上面這個叫做ListUtil.subList裡面,courseListBySearch就是處理過後的List。

這麼做的話,即使切換下一頁,所呈現出來的值還是正常的。

當然為了配合頁籤,還得加入以下;

<%
PortletURL itrURL = renderResponse.createRenderURL();
itrURL.setParameter("tabs1", "新增子分類");

%>

然後於<liferay-ui:search-container emptyResultsMessage="沒有找到圖片資料夾" delta="5" ">標籤中加上iteratorURL="<%=itrURL %>

這樣的話,就可以讓網頁記住我們剛才做的動作。

當然,有時候網頁還要配合搜尋的功能,這時候也是要把參數加在itrURL裡面。

還有一個問題,如果setParameter給的是參數,如;

String courseAssortId = renderRequest.getParameter("assortType");

抓到以上的字串想放進itrURL中的話,必須要做判斷;

if(courseAssortId == null){
courseAssortId="";
}

總之就是避免它有null值,否則會發生例外。

 

iteratorURL.setParameter("assortType", courseAssortId);

最後在像上面這樣指定給itr就可以用了。

 

文章標籤
全站熱搜
創作者介紹
創作者 squall75726 的頭像
squall75726

菜鳥工程師的Liferay Portal學習筆記

squall75726 發表在 痞客邦 留言(0) 人氣(86)