Нахождение всех контроллеров в приложении - PullRequest
5 голосов
/ 03 сентября 2010

Как мне найти все контроллеры, работающие в приложении?

Я пытаюсь создать меню, используя YUI, где меню будет отображаться только зарегистрированным контроллерам. Класс контроллера создаст статический список с различными свойствами, детализирующими имя, действие и т. Д. (Во многом как плагин grails-nav).

Я хочу создать taglib, который сможет найти все контроллеры, определить, какие из них имеют этот статический список, затем просмотреть каждый список и создать меню.

Я думаю, что могу использовать ControllerGrailsClass.metaClass.hasProperty, чтобы определить, обладает ли данный контроллер статическим свойством - но как мне найти все классы контроллера для опроса?

Заранее спасибо

1 Ответ

9 голосов
/ 03 сентября 2010

Вы можете получить список из объекта 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...