如何覆盖 grails 3 控制器的重定向
How to override redirect of grails 3 controller
我想覆盖(扩展)grails 3 控制器的重定向方法。
在 grails 2 中,这是通过元类覆盖方法来完成的。参见
从 grails 3 开始,这不再有效。
我想要实现的目标:我想操纵传递给我实现的每个控制器的重定向方法的参数映射(按包名称过滤)
或者更具体地说:我想add/change映射参数基于一些小逻辑
您可以尝试使用类型注释和 GroovyASTTransformation
进行 AST 转换。例如:看看 - groovy.transform.Sortable
注释,它使用 org.codehaus.groovy.transform.SortableASTTransformation
注入 compareTo
方法
I want to override(extend) the redirect method of a grails 3
controller.
您可以按照通常的语言规则简单地覆盖该方法...
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
}
}
我想覆盖(扩展)grails 3 控制器的重定向方法。
在 grails 2 中,这是通过元类覆盖方法来完成的。参见
从 grails 3 开始,这不再有效。
我想要实现的目标:我想操纵传递给我实现的每个控制器的重定向方法的参数映射(按包名称过滤)
或者更具体地说:我想add/change映射参数基于一些小逻辑
您可以尝试使用类型注释和 GroovyASTTransformation
进行 AST 转换。例如:看看 - groovy.transform.Sortable
注释,它使用 org.codehaus.groovy.transform.SortableASTTransformation
compareTo
方法
I want to override(extend) the redirect method of a grails 3 controller.
您可以按照通常的语言规则简单地覆盖该方法...
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
}
}