2011-11-08 8 views
0

Я работаю в grails и Я получаю свое имя класса домена из gsp для доступа к экземпляру объекта (определенного идентификатора) этого класса домена. Я пытаюсь использовать следующий код. Это верно?grails доменные объекты домена динамически

String id = params['id'] 
    String className = params['className'] 

    def instance = className.get(id); 

Есть ли другой способ?

ответ

3

Прежде всего, вы должны впрыснуть grailsApplication bean в ваш контроллер.

def grailsApplication 

После этого вы можете использовать метод getClassForName для извлечения желаемого класса по имени.

grailsApplication.getClassForName(className). 

Вы должны использовать полное квалифицированное имя класса, например. my.test.MyClass

+3

нет необходимости 'четкости grailsApplication' в контроллерах - переменная уже добавлена ​​в метаклассом –

1
def id = params.id 
def className = params.'className' 

def domainClazz = grailsApplication.classLoader.loadClass(className) 
def instance = id ? domainClazz.get(id as Long) : null 

Вы можете:

grailsApplication.classLoader.loadClass("Book") 

или

grailsApplication.classLoader.loadClass("com.yourapp.Book") 
+1

отметить, что 'grailsApplication.classLoader.loadClass (" Book ")' не работает. Таким образом, более безопасный способ - найти класс через артефакты Грааля. – omarello

Смежные вопросы