grails - 在 UrlMappings 中使用 grailsApplication 注入(inject)

标签 grails grails-controller

出于某种原因,我在使用以下代码时收到了大量错误:

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/

相关文章:

pdf - 使用ByteArrayOutputStream使用iText将水印添加到pdf

post - chalice 3 : Binding multiple command objects via POST

html - 在 gsp 模板中渲染内容

unit-testing - Grails单元测试失败

jsp - 我如何在JSP中使用Grails标记

grails - 如何将字符串变量从groovy类文件传递到 Controller ?

grails - Grails:服务与Groovy类

grails - 如何将值从 Controller 传递到gsp页面

grails - 在命令行的Webflow集成测试中未添加Grails\Groovy语法Sugar

grails - 如何在grails 3中注入(inject)特定的数据源