3

次のコードを使用すると、何らかの理由でエラーの膨大なリストが表示されます。

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


次のコードは問題なく機能し、すべてのコントローラー名を出力します。

class UrlMappings {
    static grailsApplication
static mappings = {

    "/$controller/$action?/$id?"{
        grailsApplication.controllerClasses.each { controllerClass -> // WORKS!
            println(controllerClass.name)
        }
    }

    "/"(view:"/index")
    "500"(view:'/error')
}
}

grailsApplication内部からstatic にアクセスすることはできませんstatic mappingsか?

(URL マッピングを動的に作成するには、コントローラー名を取得できる必要があります)

4

1 に答える 1

2

まだApplicationHolder動作しますが、grails のドキュメントでは非推奨のコメントにこれが記載されています


非推奨:代わりに依存性注入を使用するか、GrailsApplicationAware を実装します


grailsUrlMappingsHolderBean実装 以来GrailsApplicationAware、以下のコードが 2.0 でも機能することがわかりました

class UrlMappings {
    static mappings = {        
        getGrailsApplication().controllerClasses.each{ controllerClass -> 
            if(controllerClass.name./*your logic here*/){
                "/mod/action" {
                    controller = "${controllerClass.name}"
                }
            }
        }
    }
}
于 2011-12-17T01:59:17.567 に答える