Grails:当模型不存在时,在每个视图上为模型Map添加属性

时间:2014-09-01 20:56:37

标签: grails filter

我有一个非常干净的过滤器,旨在为模型Map添加一个属性,以便它可以显示在每个页面上:

def filters = {
    someFilter(controller:'*', action:'*') {
        after = { Map model ->
          model.something = 'hey!' // can't, since it's null
        }
    }
}

如果model为null,则会失败(NullPointerException,如预期的那样)。但是,如果我添加一个if (!model)并尝试对其进行实例化,则它是本地的,并且不会按预期运行。

当模型为空时,如何在那里放置空地图?

2 个答案:

答案 0 :(得分:1)

我认为你可以通过一些时髦的三轮车做到这一点。您可以创建groovy interceptor并将其应用于bootstrap中的所有控制器类。拦截器实现afterInvoke方法,其中检查null结果并在空映射[:]

中将它们转换

答案 1 :(得分:1)

试试这个:

def filters = {
someFilter(controller:'*', action:'*') {
    after = { Map model ->
      model.put('something', 'hey!')
    }
}

}