#grails
#grails
Вопрос:
Я работаю в grails и получаю имя своего доменного класса из gsp для доступа к экземпляру объекта (с определенным идентификатором) этого доменного класса. Я пытаюсь использовать следующий код. Правильно ли это?
String id = params['id']
String className = params['className']
def instance = className.get(id);
Есть ли какой-либо другой способ для этого?
Ответ №1:
прежде всего, вы должны внедрить компонент grailsApplication в свой контроллер.
def grailsApplication
после этого вы можете использовать метод getClassForName для извлечения нужного класса по имени.
grailsApplication.getClassForName(className).
вы должны использовать полное имя класса, например my.test.MyClass
Комментарии:
1. нет необходимости в
def grailsApplication
контроллерах — переменная уже добавлена в метакласс
Ответ №2:
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")
это не работает. Таким образом, более безопасный способ — найти класс через артефакты grails.