Grails3.2.8升级:实现过滤器
我正在进行从2.4.4版到3.2.8版的Grails升级。我听说Grails3引入了拦截器,但仍然支持过滤器。我想我会继续使用过滤器,因为我有两个广泛的过滤器。下面是一个片段,我基本上检查了请求是什么,并设置了要在视图布局gsp中使用的变量。如何继续使用我创建的过滤器(如何注册此过滤器),或者如何将以下内容转换为拦截器Grails3.2.8升级:实现过滤器,grails,Grails,我正在进行从2.4.4版到3.2.8版的Grails升级。我听说Grails3引入了拦截器,但仍然支持过滤器。我想我会继续使用过滤器,因为我有两个广泛的过滤器。下面是一个片段,我基本上检查了请求是什么,并设置了要在视图布局gsp中使用的变量。如何继续使用我创建的过滤器(如何注册此过滤器),或者如何将以下内容转换为拦截器 class AdminMenuFilters { def ACTIVE_CLASS_NAME = "active" def filters = {
class AdminMenuFilters {
def ACTIVE_CLASS_NAME = "active"
def filters = {
admin(controller:'admin', action:'index') {
before = {
request.dashboardActive = ACTIVE_CLASS_NAME
}
}
layout(controller:'layout', action:'*'){
before = {
def layoutActive = false
switch(actionName){
case null :
layoutActive = true
break;
case "index" :
layoutActive = true
break;
case "tags" :
layoutActive = true
break;
case "how" :
layoutActive = true
break;
}
if(layoutActive){
request.layoutActive = ACTIVE_CLASS_NAME
}
}
}
}
}
提前感谢您的帮助。请参阅升级文档,您可以包括一个过滤器插件以继续使用过滤器 我找到了一个推荐使用拦截器的解决方案。我需要为每个控制器创建一个拦截器,而不是一个过滤器,然后使用正则表达式在选择操作时捕获并设置活动变量 使用布局控制器的示例
class LayoutActiveInterceptor{
LayoutActiveInterceptor(){
match(controller:"layout", action: ~/(index|tags|how)/)
}
boolean before() {
request.layoutActive = Constants.ACTIVE_CLASS_NAME
true
}
boolean after() { true }
void afterView() {
// no-op
}
}
老实说,我认为在这种情况下,一个类文件就足够了。任何关于如何注册过滤器的指导都将不胜感激。提前感谢你的帮助