how to implement sorting by clicking on header in Search Container

参考: http://itsliferay.blogspot.com/2011/07/orderable-search-container.html

http://itsliferay.blogspot.in/2014/04/sort-search-container-result.html

 

1 在jsp页面加上 orderable 和 orderableProperty

<liferay-ui:search-container-column-text
				name="updateDate"
				value="${updateDate}"
				orderable="<%= true %>"
				orderableProperty="updateDate"
			/>

 2. 自定义排序的类

package com.labimo.lesson.portlet.util;

import com.labimo.lesson.model.Lesson;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.OrderByComparatorFactory;

public class LessonNameComparator extends OrderByComparator {
	private static final long serialVersionUID = -4030654580941693641L;
	public static String ORDER_COl = "name";
	public static String ORDER_BY_ASC = "name ASC";
	 
	 public static String ORDER_BY_DESC = "name DESC";
	 
	 
	  public LessonNameComparator() 
	  {
	   this(false);
	  }
	 
	  public LessonNameComparator(boolean asc) {
	   _asc = asc;
	  }
	 
	 
	 
	 public int compare(Object obj1, Object obj2) {
	   
	   Lesson instance1 = (Lesson) obj1;
	   Lesson instance2 = (Lesson) obj2;
	   
	   int value = instance1.getName().toLowerCase().compareTo(instance2.getName().toLowerCase());
	 
	   if(_asc) 
	   {
	    return value;
	   } else 
	   {
	    return -value;
	   }
	    
	 }
	 
	 
	 public String getOrderBy() {
	  
	  if (_asc) {
	   return ORDER_BY_ASC;
	  } 
	  else {
	   return ORDER_BY_DESC;
	  }
	  }
	 
	 private boolean _asc;
	 
	


}

 

 在MVCPortlet 的自实现类里面加上下面代码

  // sort
				  String orderByCol = ParamUtil.getString(renderRequest, "orderByCol");
			      String orderByType = ParamUtil.getString(renderRequest, "orderByType");
			      String curValue = ParamUtil.getString(renderRequest, "curr");
			      if(Validator.isNull(orderByCol)){
			    	  orderByCol = LessonNameComparator.ORDER_COl;
			      }
			      
			      if(Validator.isNull(orderByType)){
			    	  orderByType = "asc";
			      }
			      
			      OrderByComparator orderByComparator = null ;
			      if(LessonNameComparator.ORDER_COl.equals(orderByCol)){
			    	  if(orderByType!=null && orderByType.equalsIgnoreCase("desc")){
			    		  orderByComparator = new LessonNameComparator(false);
			        }else{
			        	orderByComparator = new LessonNameComparator(true);
			        }
			      
			      }


// 设置传进来的值
  searchContainer.setOrderByCol(orderByCol);
		        searchContainer.setOrderByType(orderByType);

 

 

你可能感兴趣的:(contain)