2011-11-08 6 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

コントローラで 'defを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

関連する問題