ibu*_*uck 5 grails grails-plugin
我试图覆盖默认的控制器重定向方法,似乎无法使下面的代码工作.
我创建了一个插件,我正在尝试使用"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
}
}
Run Code Online (Sandbox Code Playgroud)
我有签名错误还是我错过了什么?我这样做的原因是我想改变重定向的uri如果满足某个条件但是使用logging/print语句我看到它在应用程序启动/编译时会出现在"replaceRedirectMethod"中但是它没有应用程序启动后,通过控制器进行重定向时,请进入此处.
是的,签名是错误的 - 重定向采用单个Map参数(请参阅 中的声明org.codehaus.groovy.grails.plugins.web.ControllersGrailsPlugin.registerControllerMethods())
所以应该是
controllerClass.metaClass.redirect = { Map args ->
// pre-redirect logic
oldRedirect.invoke delegate, args
// post-redirect logic
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1166 次 |
| 最近记录: |