在查看grails中的一些代码时,我注意到在某一点上,特定代码在每个控制器中重用并传递给视图以呈现视图部分,该部分通常可以是主要布局的一部分。唯一的问题是如何将这些值从特定控制器外部的另一个点传递到主布局。
处理将变量传递给主布局的类似情况的最佳做法是什么?
答案 0 :(得分:4)
您可以使用Filter:
例如:
class MyFilters {
def filters = {
all(controller:'*', action:'*') {
before = { }
after = { Map model ->
// add your common data here
model.commonData = ...
return true
}
afterView = { Exception e -> }
}
}
}
在控制器执行之后但在呈现视图之前调用after
闭包。您还可以更具体地了解过滤器配置(all(controller:'*', action:'*')
)。例如,您可以排除某些控制器或类似的东西。