有關於search-container這個好用的tag,在這裡稍微做點筆記。

 

首先我們需要從資料庫中叫出資料,所以需要於JSP內叫出所需要的資料表物件;

 

<liferay-ui:search-container emptyResultsMessage="no-users-were-found" delta="10">

第一行是設定search-container的屬性。

 

 


<liferay-ui:search-container-results>
<%
results = course_LocalServiceUtil.getcourse_s(searchContainer.getStart(), searchContainer.getEnd());
total = course_LocalServiceUtil.getcourse_sCount();
pageContext.setAttribute("results", results);
pageContext.setAttribute("total", total);
%>

</liferay-ui:search-container-results>

 

 

results便是我們要帶入的資料表,可以使用liferay內LocalServiceUtil的方法來抓出整張表。

但這裡也可自訂,例如我只需要UserID where age > 20這種年紀小於某部分的使用者,可以在LocalServiceImpl這類的Java檔中加上;

public List<course_Assort> dynamicQuerySortByParent(String keyWord) throws SystemException{
DynamicQuery query = DynamicQueryFactoryUtil.forClass(course_Assort.class);
if(Validator.isNotNull(keyWord)){
long pid = 0;
//query.add(PropertyFactoryUtil.forName("parentId").ne("%"+keyWord+"%")); //這邊相當於sql碼的like,.ne是not equal的意思。
query.add(PropertyFactoryUtil.forName("parentId").ne(pid));
}
query.addOrder(OrderFactoryUtil.desc("courseAssortId"));
return dynamicQuery(query,-1,-1);
}

有了以上的自訂方法後,只要在result裡放入dynamicQuerySortByParent,就可以抓出自己想要的list。

 

total是要抓出總共有幾筆資料,只需要呼叫抓數量的方法就好。

 

 

接下來這行非常重要


<liferay-ui:search-container-row className="com.isu.ocw.model.course_"
keyProperty="courseId"
modelVar="course_"
escapedModel="<%=true %>"
>

className就是你資料表的名稱,在model後填入該table名稱就好,keyProperty就是主鍵。

modelVar其實是可以自訂欄位內容的物件,例如我做這部分的範例時,我是要用course_這個資料表中的一個id去抓另一個資料表的資料

這時候我們就可以

 

 

<%course_Assort ca= course_AssortLocalServiceUtil.getcourse_Assort(course_.getCourseAssortId()); %>

在這宣告一個想要用的資料表物件,然後參數便可以用modelVar填,在這裡我是把類別ID當參數放入

 

 

<liferay-ui:search-container-column-text
name="學院類別"
value="<%=ca.getAssortType() %>"
orderable="<%=true %>"
/>

而這邊就是欄位內的東西了,name是表頭,value是我想要顯示的其他欄位資料,若不需此功能只要改填property="資料表欄位名稱"即可。

 

若想在最後一欄加上一個liferay自定的按鈕

<liferay-ui:search-container-column-jsp
align="center" path="/html/isu_ocw_courseAssort/course_assort_action.jsp" name="" />
</liferay-ui:search-container-row>

這樣就可以加入了,當然action.jsp要自己寫

 

<liferay-ui:search-iterator
paginate="true"
/>

</liferay-ui:search-container>

最後加入以上,search-container的基本功能就到此,若無錯誤應可正常顯示。

 

 

 

*以下是action.jsp

<portlet:renderURL var="closeURL">
</portlet:renderURL>

 


<liferay-ui:icon-menu message="ocw.courseAdmin.actionDisplay" align="right">

 

<%
ResultRow row = (ResultRow) request.getAttribute(WebKeys.SEARCH_CONTAINER_RESULT_ROW);
course_ course = (course_)row.getObject();
String courseId = String.valueOf(course.getCourseAssortId());

%>

 

<portlet:renderURL var="videoUpdateURL">
<portlet:param name="mvcPath" value="/html/isu_ocw_admin/admin_video_update.jsp" />
<portlet:param name="courseId" value="<%=String.valueOf(course.getCourseId()) %>" />
</portlet:renderURL>

 

<portlet:actionURL var="deleteURL" name="deleteVideo">
<portlet:param name="delete" value="<%=String.valueOf(course.getCourseId())%>"/>
</portlet:actionURL>

 

<liferay-ui:icon image="edit" url="<%=videoUpdateURL.toString() %>" />
<liferay-ui:icon-delete url="<%=deleteURL.toString() %>" />
<%--
<liferay-ui:icon-deactivate url="#" />
--%>
</liferay-ui:icon-menu>

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 squall75726 的頭像
    squall75726

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

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