在grails中分类的分页

时间:2014-12-23 16:32:19

标签: sorting grails pagination

我需要根据" Participant_Name"的排序显示列表。领域。我使用下面的代码从域类中获取数据并将其发送到我的gsp -

def eventName = "${params.EventNameList}"

if(!params.max)
{
    params.max = 5
}

def ParticipantRec = EventList.findAllByEvent_Name(
    eventName, params).sort { it.Participant_Name }

没有这样的错误,但记录没有按排序顺序排列。而是,列表按记录范围排序。例如,如果列表是 -

["SUNNY","RAHUL",ANIL","BABY","AKSHAY","CAD","JOSEPH")

然后输出为 -

"ANIL","BABY","CAD","RAHUL","SUNNY"

然后

"AKSHAY","JOSEPH"

2 个答案:

答案 0 :(得分:3)

如果你在调用finder调用的结果时调用sort,并且传入了max,那么你得到的是排序的第一个max条目。而是以与您已经传递max相同的方式传递分页和排序信息。请参阅Grails在线文档中的findAllBy示例:

def results = Book.findAllByTitle("The Shining",
              [max: 10, sort: "title", order: "desc", offset: 100])

答案 1 :(得分:1)

除了Nathan提到的调整动态查找器方法对环境事件有用之外,您还可以告诉您的域类按映射闭包中的指定属性自动排序。

例如,如果您总是希望EventList.list()返回按Participant_Name排序的所有EventList对象的列表,则可以按如下方式设置映射闭包:

class EventList {

    String Participant_Name

    static mapping = {
        sort "Participant_Name"
    }
}

这样就可以在任何时候查询EventList对象,除非另有说明,否则它们将按Participant_Name排序。请注意,默认情况下,它们将按升序排序,在此示例中将按字母顺序排序。如果您想自定义此行为,则需要按如下方式声明它

static mapping = {
    sort Participant_Name: "desc" // or 'asc' for ascending, which is the default
}