如何找到在应用程序中运行的所有控制器?
我正在尝试使用YUI创建菜单,其中只有已注册的控制器才会显示菜单。控制器类将创建一个静态列表,其中包含详细说明名称,操作等的各种属性(非常类似于grails-nav插件)。
我想创建一个taglib,它可以找到所有控制器,识别哪些控制器有这个静态列表,然后查看每个列表并构建一个菜单。
我想我可以使用ControllerGrailsClass.metaClass.hasProperty来识别给定的控制器是否具有静态属性 - 但是如何查找要询问的所有Controller类?
提前致谢
答案 0 :(得分:9)
您可以从GrailsApplication对象中获取列表。例如:
class TestController {
def grailsApplication // gets injected automatically
def test = {
grailsApplication.controllerClasses.each { controllerArtefact ->
def controllerClass = controllerArtefact.getClazz()
println "$controllerArtefact, $controllerClass"
}
}
}
如果您不在控制器中,可以像下面这样抓住grails应用程序对象:
import org.codehaus.groovy.grails.commons.ApplicationHolder
def grailsApplication = ApplicationHolder.application