gpt4 book ai didi

grails 重写重定向 Controller 方法

转载 作者:行者123 更新时间:2023-12-02 10:44:58 25 4
gpt4 key购买 nike

我正在尝试覆盖默认的 Controller 重定向方法,但似乎无法让以下代码正常工作。

我创建了一个插件,并尝试使用“doWithDynamicMethods”来替换重定向。

def doWithDynamicMethods = {ctx ->
application.controllerClasses.each() { controllerClass ->
replaceRedirectMethod(controllerClass)
}
}

void replaceRedirectMethod(controllerClass) {
def oldRedirect = controllerClass.metaClass.pickMethod("redirect", [Map] as Class[])
controllerClass.metaClass.redirect = { Map args, Map params ->
// never seems to get here
}
}

我的签名是错误的还是我遗漏了什么?我这样做的原因是,如果满足特定条件,我想更改重定向的 uri,但通过日志记录/打印语句,我看到它在应用程序启动/编译时进入“replaceRedirectMethod”,但它并没有应用程序启动后通过 Controller 进行重定向时不会进入那里。

最佳答案

是的,签名错误 - 重定向采用单个 Map参数(参见 org.codehaus.groovy.grails.plugins.web.ControllersGrailsPlugin.registerControllerMethods() 中的声明)

应该是这样

controllerClass.metaClass.redirect = { Map args ->
// pre-redirect logic
oldRedirect.invoke delegate, args
// post-redirect logic
}

关于grails 重写重定向 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com