2011-11-08 4 views
0

나는 grails에서 작업하고 있습니다. gsp에서이 도메인 클래스의 (특정 ID의) 객체 인스턴스에 액세스하기 위해 내 도메인 클래스 이름을 가져옵니다. 나는 다음 코드를 시도하고있다. 이 올바른지?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")'이 작동하지 않습니다. 따라서 더 안전한 방법은 grails artifacts를 통해 클래스를 찾는 것입니다. – omarello

관련 문제