如何覆盖 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
    }
}