如何在where
闭包内使用隐式参数?
我对目前的解决方法并不感到特别自豪:
def index() {
def params = params // <-- UGLY HACK
respond Project.where {
if (params.sender) {
sender.id == params.sender // <-- OTHERWISE THIS WOULD FAIL
}
}
}
另外我注意到我可以通过在闭包中放置泛型Groovy代码来参数化查询,例如上面的if
。奇怪的是,即使没有黑客,条件内的params
也不会造成任何麻烦。这种做法行之有效还是不鼓励?
答案 0 :(得分:0)
你可以先得到sender
:
def thesender = Sender.get(params.sender)
然后将其作为标准传递给where
关闭:
Project.where { sender == thesender }
你得到这样的东西:
def index() {
def thesender = Sender.get(params.sender)
respond Project.where { sender == thesender }
}