jmesa - column sorting

来源:互联网 发布:mac air可以玩魔兽世界 编辑:程序博客网 时间:2024/06/06 19:57

<!-- /* Font Definitions */ @font-face{font-family:宋体;panose-1:2 1 6 0 3 1 1 1 1 1;mso-font-alt:SimSun;mso-font-charset:134;mso-generic-font-family:auto;mso-font-pitch:variable;mso-font-signature:3 135135232 16 0 262145 0;}@font-face{font-family:"/@宋体";panose-1:2 1 6 0 3 1 1 1 1 1;mso-font-charset:134;mso-generic-font-family:auto;mso-font-pitch:variable;mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal{mso-style-parent:"";margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;mso-pagination:none;font-size:10.5pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:宋体;mso-font-kerning:1.0pt;} /* Page Definitions */ @page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section1{size:612.0pt 792.0pt;margin:72.0pt 90.0pt 72.0pt 90.0pt;mso-header-margin:36.0pt;mso-footer-margin:36.0pt;mso-paper-source:0;}div.Section1{page:Section1;}-->

Jmesacolumn sorting

 

rocars中定义了

package customs.rocars.hibernate;

 

public class PagedCriteria {

 

    private PageFilter pageFilter = new PageFilter( );

   

    private PageSort pageSort = new PageSort( );

 

    public PageFilter getPageFilter() {

       return pageFilter;

    }

 

    public void setPageFilter(PageFilter pageFilter) {

       this.pageFilter = pageFilter;

    }

 

    public PageSort getPageSort() {

       return pageSort;

    }

 

    public void setPageSort(PageSort pageSort) {

       this.pageSort = pageSort;

    }

}

//////////////////////////////////////////////////////////////////////////////////////////////////

package customs.rocars.hibernate;

 

import java.util.ArrayList;

import java.util.List;

 

import customs.rocars.dto.SortDTO;

 

public class PageSort {

 

       List<SortDTO>sorts = new ArrayList<SortDTO>();

 

   public void addSort(String property, String order) {

       sorts.add(new SortDTO(property, order));

    }

 

       publicList<SortDTO> getSorts() {

              returnsorts;

       }

 

       publicvoid setSorts(List<SortDTO> sorts) {

              this.sorts= sorts;

       }

 

}

/////////////////////////////////////////////////////////////////

可以在controller中调用一下code,从而获得jmesa为我们封装好的sorting attribute

pagedCriteria.setPageSort(TableFacadeUtils.getCommonSort(tableFacade.getLimit()));

 

为了能让在print的时候也能用到sortingattribute,添加了以下一句code

//remove comment here, youcan apply column sorting (1st steps)

eqVehCrossHistoryDTO.setPrintPageSort(pagedCriteria.getPageSort());

 

最后,在dao中调用以下代码构造order by

/*//remove comment here, youcan apply column sorting (2st steps)

              //counstruct order string

              String orderString = CommonSortUtil.getOrderString(dto.getPrintPageSort(),new EqVehCrossHistorySort());

              if(!StringUtil.isEmptyString(orderString)){

                  hqlBuffer.append(orderString);

              }else{

                  //default order by string

                  hqlBuffer.append(" ORDER BYVCFL.VEH_REGT_MK");

              }

              */

当然,这种做法是基于使用SQL进行查询的时候的做法。

至于用HqlCriteria的做法也类似。

 

同时,以上的做法是适用于有多个order bycase,因为jmesa缺省的column sorting是可以同时有多个column一起排序的。

 

如果先每次只用一个column排序,那就得修改jmesa的源码了,不难,加多一句就可以了,

 

 

 

 

 

 

addSortToLimit : function(id,position, property, order) {

             

           removeAllSortsFromLimit(id);//加上这一句就可以了

          

/*First remove the sort if it is set on the limit,

               and then set the page back tothe first one.*/

            this.removeSortFromLimit(id, property);

            this.setPageToLimit(id, '1');

 

            var limit = this.getTableFacade(id).limit;

            var sort = new classes.Sort(position, property, order);

            limit.addSort(sort);

       },

还有只有一个column的情况,构造order by的时候就相对简单了

原创粉丝点击