我想覆盖(扩展)grails 3控制器的重定向方法。
在grails 2中,这是通过metaClass覆盖方法完成的。见Override Grails redirect method
自Grails 3以来,这已不再适用了。
我想要实现的目标:我想操纵传递给我实现的每个控制器的重定向方法的参数映射(按包名过滤)
或者更具体一点:我想基于一些小逻辑添加/更改映射参数
答案 0 :(得分:3)
我想覆盖(扩展)grails 3的重定向方法 控制器。
您可以按照通常的语言规则覆盖方法......
class DemoController {
// ...
void redirect(Map m) {
// do whatever you like here...
}
}
如果你想调用原始的redirect
方法,你也可以这样做,但你需要明确地实现Controller
特征......
import grails.artefact.Controller
class DemoController implements Controller {
void redirect(Map m) {
// do whatever you like here before
// invoking the original redirect...
// invoke the original redirect...
Controller.super.redirect m
}
}
答案 1 :(得分:0)
您可以尝试使用类型注释和GroovyASTTransformation
进行AST转换。例如:查看使用groovy.transform.Sortable
注入compareTo
方法的org.codehaus.groovy.transform.SortableASTTransformation
注释