我想根据当前日期更改域模型变量的值



我创建了一个名为Report的域模型对象,并给了它几个变量,如:

Date dateCreated
Boolean expired

然后像这样创建对象的实例:

def report = new Report(id: 1, dateCreated: currentDate, expired: false)

保存这些实例工作得很好,但我想让expired变量在dateCreated变量24小时后自动更改为"true"。这对于我正在使用的report.gsp网站来说真的很重要,但如果我能帮助它,在.gsp中放入"if"循环似乎是一种不好的做法。我需要知道应该在哪里触发此事件,以便过期变量的新值能够持续存在。

如果你想让这个值在数据库中自动更新,而不需要在你的Grails应用程序中触发任何特殊的东西,那么你需要在数据库中编写一些函数来实现这一点。如果在Grails应用程序更新对象时只更新过期属性是可以的,那么你可以这样做:

class Report {
    Date dateCreated
    Boolean expired
    def beforeUpdate() {
        // expired if created more than 7 days ago...
        expired = dateCreated < (new Date() - 7)
    }
}

当然你也可以做同样的事情,如果你想…

class SomeController {
    def someAction() {
        def report = Report.get(params.id)
        report.expired = report.dateCreated < (new Date() - 7)
        // ...
    }
}

相关内容

  • 没有找到相关文章

最新更新