Liferay6.2开发之使用Search-Container

来源:互联网 发布:利搜排名软件 编辑:程序博客网 时间:2024/06/03 07:16

一..SearchContainer的基本使用我就不讲了,这里主要讲讲RowChecker的使用,我们先看下效果


使用RowChecker的步骤

1.在<liferay-ui:search-container这个标签中添加属性 rowChecker="<%= new RowChecker(renderResponse) %>"

2.在<liferay-ui:search-container标签外添加<aui:form name="fm">包裹它.作用:为了后面取值

3.添加一个按钮用来获取多选框中已勾选的值,需要执行一段js,如下:

<aui:button cssClass="btn btn-danger" onClick='<%= renderResponse.getNamespace() + "delete();" %>' value="Delete" />
<aui:script>
Liferay.provide(
window,
'<portlet:namespace />delete',
function() {
var checkBoxValue = Liferay.Util.listCheckedExcept(document.<portlet:namespace />fm, "<portlet:namespace />allRowIds");
alert(checkBoxValue);
},
['liferay-util-list-fields']
);
</aui:script>

注意点:因为每一行的id是根据primarykey生成的,所以keyProperty="xxx"这个属性必须有,这个是service.xml中的实体id

<liferay-ui:search-container-row
className="com.skythinking.portlet.member.model.Member"
keyProperty="memberId" modelVar="member">

完整的view.jsp如下:

[html] view plain copy
  1. <%@page import="com.liferay.portal.kernel.dao.search.RowChecker"%>  
  2. <%@page  
  3.     import="com.skythinking.portlet.member.service.MemberLocalServiceUtil"%>  
  4. <%@page  
  5.     import="com.skythinking.portlet.member.service.MemberLocalService"%>  
  6. <%@page import="com.liferay.portal.kernel.util.ListUtil"%>  
  7. <%@page  
  8.     import="com.skythinking.portlet.member.service.persistence.MemberPersistenceImpl"%>  
  9. <%@page  
  10.     import="com.skythinking.portlet.member.service.persistence.MemberPersistence"%>  
  11. <%@page import="com.skythinking.portlet.member.model.Member"%>  
  12. <%@ include file="/html/common/init.jsp"%>  
  13. <%@ page contentType="text/html; charset=UTF-8"%>  
  14.   
  15. <aui:form name="fm">  
  16. <liferay-ui:search-container emptyResultsMessage="没有任何数据,请添加!" delta="5" rowChecker="<%= new RowChecker(renderResponse) %>" >  
  17.     <liferay-ui:search-container-results>  
  18.         <%  
  19.             List<Member> tempResults = MemberLocalServiceUtil  
  20.                             .getMembers(renderRequest);  
  21.                     results = ListUtil.subList(tempResults,  
  22.                             searchContainer.getStart(),  
  23.                             searchContainer.getEnd());  
  24.                     total = tempResults.size();  
  25.                     pageContext.setAttribute("results", results);  
  26.                     pageContext.setAttribute("total", total);  
  27.         %>  
  28.     </liferay-ui:search-container-results>  
  29.       
  30.     <!-- modelVar="member" 添加了这个属性,才可以在el表达式中获取member的各种属性 -->  
  31.     <liferay-ui:search-container-row  
  32.         className="com.skythinking.portlet.member.model.Member"  
  33.         keyProperty="memberId" modelVar="member">  
  34.         <liferay-ui:search-container-column-text name="Id"  
  35.             property="memberId" />  
  36.         <liferay-ui:search-container-column-text name="会员名"  
  37.             property="memberName" />  
  38.         <liferay-ui:search-container-column-text name="联系电话"  
  39.             property="memberPhone" />  
  40.         <liferay-ui:search-container-column-text name="创建时间"  
  41.             property="createDateFormat" />  
  42.         <liferay-ui:search-container-column-text name="actions">  
  43.   
  44.   
  45.             <portlet:actionURL var="deleteUrl" name="delete">  
  46.                 <portlet:param name="memberId" value="${member.memberId}" />  
  47.             </portlet:actionURL>  
  48.             <liferay-ui:icon-delete image="delete" url="${deleteUrl}" />  
  49.   
  50.         </liferay-ui:search-container-column-text>  
  51.     </liferay-ui:search-container-row>  
  52.   
  53.     <!-- 迭代标签 -->  
  54.     <liferay-ui:search-iterator />  
  55. </liferay-ui:search-container>  
  56. </aui:form>  
  57.   
  58. <portlet:renderURL var="addUrl">  
  59.     <portlet:param name="mvcPath" value="/html/member/edit.jsp" />  
  60. </portlet:renderURL>  
  61.   
  62. <aui:button cssClass="btn btn-primary" value="添加" href="${addUrl}" />  
  63.   
  64. <aui:button cssClass="btn btn-danger" onClick='<%= renderResponse.getNamespace() + "delete();" %>' value="Delete" />  
  65. <aui:script>  
  66.     Liferay.provide(  
  67.     window,  
  68.     '<portlet:namespace />delete',  
  69.     function() {  
  70.     var checkBoxValue = Liferay.Util.listCheckedExcept(document.<portlet:namespace />fm, "<portlet:namespace />allRowIds");  
  71.     alert(checkBoxValue);  
  72.     },  
  73.     ['liferay-util-list-fields']  
  74.     );  
  75. </aui:script>  

如何进行表单的提交呢?请看下面的代码

[html] view plain copy
  1. <aui:button cssClass="btn btn-warning" value="编辑"  onClick='<%= renderResponse.getNamespace() + "edit();" %>'/>  
  2.   
  3. <aui:button cssClass="btn btn-danger" value="删除" onClick='<%= renderResponse.getNamespace() + "delete();" %>'/>  
  4.   
  5. <aui:script>  
  6.     Liferay.provide(  
  7.         window,  
  8.         '<portlet:namespace />edit',  
  9.         function() {  
  10.             document.<portlet:namespace />fm.method = "post";                  
  11.             var ids = document.<portlet:namespace />fm.<portlet:namespace />rowIds.value = Liferay.Util.listCheckedExcept(document.<portlet:namespace />fm, '<portlet:namespace />allRowIds');  
  12.             if (confirm(ids.length)>1){  
  13.                 alert();  
  14.             }  
  15.             submitForm(document.<portlet:namespace />fm, '<portlet:actionURL name="editSelected"></portlet:actionURL>');  
  16.         },  
  17.         ['liferay-util-list-fields']  
  18.     );  
  19. </aui:script>  
  20.   
  21. <aui:script>  
  22.     Liferay.provide(  
  23.         window,  
  24.         '<portlet:namespace />delete',  
  25.         function() {  
  26.             if (confirm('确定要删除吗?'))  {  
  27.                 document.<portlet:namespace />fm.method = "post";                  
  28.                 document.<portlet:namespace />fm.<portlet:namespace />rowIds.value = Liferay.Util.listCheckedExcept(document.<portlet:namespace />fm, '<portlet:namespace />allRowIds');  
  29.                 submitForm(document.<portlet:namespace />fm, '<portlet:actionURL name="deleteSelected"></portlet:actionURL>');  
  30.             }  
  31.         },  
  32.         ['liferay-util-list-fields']  
  33.     );  
  34. </aui:script>  

后台多Action处理,代码片段如下:

[java] view plain copy
  1. public void editSelected(ActionRequest actionRequest,  
  2.             ActionResponse actionResponse) {  
  3.         long[] ids = ParamUtil.getLongValues(actionRequest, "rowIds");  
  4.         for (int i = 0; i < ids.length; i++) {  
  5.             System.out.println("----编辑-----:" + ids[i]);  
  6.         }  
  7.     }  
  8.   
  9.     public void deleteSelected(ActionRequest actionRequest,  
  10.             ActionResponse actionResponse) {  
  11.         long[] ids = ParamUtil.getLongValues(actionRequest, "rowIds");  
  12.         for (int i = 0; i < ids.length; i++) {  
  13.             try {  
  14.                 MemberLocalServiceUtil.deleteMember(ids[i]);  
  15.             } catch (Exception e) {  
  16.                 e.printStackTrace();  
  17.             }  
  18.         }  
  19.     }  


代码下载地址:http://download.csdn.net/detail/u013310075/8387659

导入工程时,请选择导入到SDK目录下portlets目录下

原创粉丝点击