出于某种原因,我在使用以下代码时收到了大量错误:
class UrlMappings {
static grailsApplication
static mappings = {
grailsApplication.controllerClasses.each { controllerClass -> // FAILS!
println(controllerClass.name)
}
"/$controller/$action?/$id?"{}
"/"(view:"/index")
"500"(view:'/error')
}
错误:http://pastebin.com/tiEsENie
<小时/>以下代码工作正常并打印所有 Controller 名称:
class UrlMappings {
static grailsApplication
static mappings = {
"/$controller/$action?/$id?"{
grailsApplication.controllerClasses.each { controllerClass -> // WORKS!
println(controllerClass.name)
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
是否可以从静态映射
内部访问静态grailsApplication
?
(我需要能够获取 Controller 名称才能动态创建 urlmappings)
最佳答案
虽然 ApplicationHolder
仍然有效,但 grails 文档在弃用注释中声明了这一点
已弃用:使用依赖注入(inject)或实现 GrailsApplicationAware
由于 grailsUrlMappingsHolderBean
实现了 GrailsApplicationAware
,我发现下面的代码也适用于 2.0
class UrlMappings {
static mappings = {
getGrailsApplication().controllerClasses.each{ controllerClass ->
if(controllerClass.name./*your logic here*/){
"/mod/action" {
controller = "${controllerClass.name}"
}
}
}
}
}
关于grails - 在 UrlMappings 中使用 grailsApplication 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8541722/