Grails中的sortableColumn

1.最近工程中使用到了sortableColumn这个标签,他实现的作用就是支持表格的排序。如果

你使用的grails自动生成的gsp页面的话,在list.gsp这个页面中,你会发现这个标签,它被用

在表格头中,下边这段代码就是其简单的应用。例如:

 

 

<table > 
                   <thead> 
                       <tr> 
                           <g:sortableColumn property="id" title="序号"  titleKey="bookInstance.id"/> 
                            
                             <g:sortableColumn property="name" title="书名" /> 
                            
                         </tr> 
                     </thead>

</table>

查看其官方文档sortableColumn

  • property – 定义了按照那个字段排序
  • defaultOrder (可选) -默认的排序方式,默认是升序
  •  title (可选) – 显示的标题
  • titleKey (可选) – 如果没有定义title的话,标题就会显示titlekey定义的内容,这个属性利于实现国际化,我们可以在message.properties中定义
  • params (可选) – 一个包含request的参数的map
  • action (可选) – 指定的action,如果没有选择的话,默认是list

2.但是在实际开发中遇到了一些问题,因为我默认让列表按照图书创建时间倒排序,action如

下:

def list = {

        if(!params.max) params.max=10 
       params.sort="createTime" 
        params.order="desc" 
            return [count:Book.count(),bookInstanceList:Book.list(params)] 
         
    }

在页面点击sortableColumn不起作用,这是为什么呢,再细看action发现了问题,因为我的

sortableColumn没有指定action,所以默认action是list,但是我已经把params.sort写死

了,所以每次点击都是按照createTime到排序的,这个问题很容易解决,我们只需在这个

action加如下代码即可:

def list = {

    if(!params.max) params.max=10

    if(!params.sort) params.sort="createTime"

if(!params.order) params.order="desc"

  return [count:Book.count(),bookInstanceList:Book.list(params)] 
    

红色代码很容易理解,如果请求参数为空就为,排序就按我们默认设定的,如果不为空,就按

照我们传入的参数排序。

你可能感兴趣的:(grails)