【问题标题】:grails access domain objects dynamicallygrails 动态访问域对象
【发布时间】:2011-11-09 04:52:00
【问题描述】:

我在 grails 和 我从 gsp 获取我的域类名称以访问该域类的对象实例(具有特定 ID)。我正在尝试以下代码。这个对吗?

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

   def instance = className.get(id);

还有其他方法吗?

【问题讨论】:

    标签: grails


    【解决方案1】:

    首先,您必须在控制器中注入 grailsApplication bean。

    def grailsApplication 
    

    之后,您可以使用 getClassForName 方法按名称检索所需的类。

    grailsApplication.getClassForName(className).
    

    你必须使用完整的类名,例如我的.test.MyClass

    【讨论】:

    • 控制器中不需要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")
    

    【讨论】:

    • 请注意grailsApplication.classLoader.loadClass("Book") 不起作用。所以更安全的方法是通过 grails artefacts 找到类。
    猜你喜欢
    • 2013-05-05
    • 1970-01-01
    • 2011-08-10
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多