Grails 如何在where闭包中引用隐式参数

Grails 如何在where闭包中引用隐式参数,grails,gorm,implicit-parameters,Grails,Gorm,Implicit Parameters,如何在where闭包中使用隐式参数 我并不特别为我目前的解决方案感到自豪: def index() { def params = params // <-- UGLY HACK respond Project.where { if (params.sender) { sender.id == params.sender // <-- OTHERWISE THIS WOULD FAIL

如何在where闭包中使用隐式参数

我并不特别为我目前的解决方案感到自豪:

def index() {
    def params = params                 // <-- UGLY HACK
    respond Project.where {
        if (params.sender) {
            sender.id == params.sender  // <-- OTHERWISE THIS WOULD FAIL
        }
    }
}
我还注意到,我可以通过将通用Groovy代码放入闭包中来参数化查询,如上面的if。奇怪的是,即使没有黑客攻击,条件中的参数也没有引起任何麻烦。这种做法可以还是不可取?

好吧,你可以先找到发件人:

然后将其作为标准传递给您的where闭包:

你会得到这样的结果:

def index() {
    def thesender = Sender.get(params.sender)

    respond Project.where { sender == thesender }
}
Project.where { sender == thesender }
def index() {
    def thesender = Sender.get(params.sender)

    respond Project.where { sender == thesender }
}