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的参数的mapaction
(可选) – 指定的action,如果没有选择的话,默认是list2.但是在实际开发中遇到了一些问题,因为我默认让列表按照图书创建时间倒排序,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)]
}
红色代码很容易理解,如果请求参数为空就为,排序就按我们默认设定的,如果不为空,就按
照我们传入的参数排序。