查找应用程序中的所有控制器

Pri*_*mus 5 grails

如何找到应用程序中运行的所有控制器?

我正在尝试使用YUI创建一个菜单,其中只有注册的控制器将显示一个菜单.控制器类将创建一个静态列表,其中包含详细说明名称,操作等的各种属性(非常类似于grails-nav插件).

我想创建一个taglib,它可以找到所有控制器,识别哪些控制器有这个静态列表,然后查看每个列表并构建一个菜单.

我想我可以使用ControllerGrailsClass.metaClass.hasProperty来识别给定的控制器是否具有静态属性 - 但是如何找到要询问的所有Controller类?

提前致谢

ata*_*lor 9

您可以从GrailsApplication对象中获取列表.例:

class TestController {

    def grailsApplication // gets injected automatically

    def test = {
        grailsApplication.controllerClasses.each { controllerArtefact ->
            def controllerClass = controllerArtefact.getClazz()
            println "$controllerArtefact, $controllerClass"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您不在控制器中,则可以像下面这样获取grails应用程序对象:

import org.codehaus.groovy.grails.commons.ApplicationHolder

def grailsApplication = ApplicationHolder.application
Run Code Online (Sandbox Code Playgroud)