如何在 grails 1.3.7 中对具有 JodaTime / DateTime 类型属性的域对象进行排序?

发布于 2024-12-03 01:17:30 字数 833 浏览 1 评论 0原文

我正在制作一个小型活动日历,我想按开始时间对活动进行排序!

我在 grails 中使用 JodaTime 插件作为 startTime 属性。 ( http://www.grails.org/JodaTime+Plugin )

那么,我怎样才能用这个数据类型排序?这是行不通的:

def sortedEvents = events.asList().sort({ a, b -> a.startTime <=> b.startTime } as Comparator)

我希望你能帮助我!

谢谢, Whitenexx

/编辑/ 这是我获取事件的代码:

    def getEventsNext(Location location) {
        def events = location.events.findAll { it.endTime >= new DateTime() }
    def sortedEvents = events.sort{it.startTime}
    System.out.println(sortedEvents); //test
    return sortedEvents
}

在 /event/list 操作中,g:sortableColumn 一切正常(按 startTime 排序): /event/list

I'm working on a small event calendar and i want to sort the events by start time!

I'm using JodaTime Plugin in grails for the startTime attribute. ( http://www.grails.org/JodaTime+Plugin )

So, how can i sort with this datatype? This does not work:

def sortedEvents = events.asList().sort({ a, b -> a.startTime <=> b.startTime } as Comparator)

I hope you can help me!

Thanks,
whitenexx

/EDIT/
This is the code where i'm getting the events:

    def getEventsNext(Location location) {
        def events = location.events.findAll { it.endTime >= new DateTime() }
    def sortedEvents = events.sort{it.startTime}
    System.out.println(sortedEvents); //test
    return sortedEvents
}

In /event/list action everything works fine with g:sortableColumn (sorting by startTime):
/event/list

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

被你宠の有点坏 2024-12-10 01:17:31

试试这个:

def sortedEvents = events.asList().sort{it.startTime}

要反转排序顺序,请使用:

def sortedEvents = events.asList().sort{-it.startTime}

仅供参考,Groovy 将此 sort() 方法添加到 Collection 中,以便您可以删除 asList()如果 events 已经是 Collection,则来自上面的代码。

Try this:

def sortedEvents = events.asList().sort{it.startTime}

To reverse the sorting order, use:

def sortedEvents = events.asList().sort{-it.startTime}

FYI, Groovy adds this sort() method to Collection so you can remove asList() from the code above if events is already a Collection.

‖放下 2024-12-10 01:17:31

尝试重写域类中的 compareTo 方法。

例如,

int compareTo(obj) {
    startTime.compareTo(obj.startTime)
} 

编辑

像这样对你的事件进行排序:

def sortedEvents = events.sort{e1,e2-> e1.startTime.compareTo(2.startTime)}

或者按照@Don的建议,groovier的等效项

def sortedEvents = events.sort{e1,e2-> e1.startTime <=> e2.startTime}

Try overriding the compareTo method in your domain classes.

For example,

int compareTo(obj) {
    startTime.compareTo(obj.startTime)
} 

Edit

Sort your events like so:

def sortedEvents = events.sort{e1,e2-> e1.startTime.compareTo(2.startTime)}

Or as suggested by @Don, the groovier equivalent

def sortedEvents = events.sort{e1,e2-> e1.startTime <=> e2.startTime}
梦巷 2024-12-10 01:17:31

尝试

def events = location.events.findAll { it.endTime.isAfterNow() }
def sortedEvents = events.sort{it.startTime.toDate()}

JavaDoc for isAfterNow( )

Try

def events = location.events.findAll { it.endTime.isAfterNow() }
def sortedEvents = events.sort{it.startTime.toDate()}

JavaDoc for isAfterNow()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文