我有一个非常干净的过滤器,旨在为模型Map添加一个属性,以便它可以显示在每个页面上:
def filters = {
someFilter(controller:'*', action:'*') {
after = { Map model ->
model.something = 'hey!' // can't, since it's null
}
}
}
如果model为null,则会失败(NullPointerException
,如预期的那样)。但是,如果我添加一个if (!model)
并尝试对其进行实例化,则它是本地的,并且不会按预期运行。
当模型为空时,如何在那里放置空地图?
答案 0 :(得分:1)
我认为你可以通过一些时髦的三轮车做到这一点。您可以创建groovy interceptor并将其应用于bootstrap中的所有控制器类。拦截器实现afterInvoke方法,其中检查null结果并在空映射[:]
中将它们转换答案 1 :(得分:1)
试试这个:
def filters = {
someFilter(controller:'*', action:'*') {
after = { Map model ->
model.put('something', 'hey!')
}
}
}