【问题标题】:how to get grails class name from a string如何从字符串中获取grails类名
【发布时间】:2013-09-21 04:33:50
【问题描述】:

这是我的 grails 域对象的精简版:

//this is a lookup table
class PetType {
  String description
}

class Family {
   static hasMany = [
      petTypePreferred:PetType
   ]
}

在我的控制器中,我从 gsp 返回了一个参数字符串值“petTypePreferred”。知道该字符串值并知道域类 Family,我如何从“petTypePreferred”字符串值中确定域类?在 grails 2.2.4 中,getPropertyByName(String value) 方法在域对象上被视为无效,即使它在 javadoc 中也是如此。

所以我有 String petTypePreferred 和 Class Family,但我需要根据这两条信息找到 Class PetType。

【问题讨论】:

    标签: grails


    【解决方案1】:

    我不确定你到底想要什么:

    获取域类名

    hasManyFamily 中的一个简单的静态MapMap 将字段名称存储为键,将目标类型存储为值。因此,您可以使用以下方法从字符串 petTypePreferred 中获取域类 PetType

    Familiy.hasMany['petTypePreferred']
    

    为给定的Family 实例在PetType 中获取description 的值:

    一个家庭可以有多种宠物类型 (hasMany),因此结果必须是一个集合:

    Family family = ...
    List descriptions = family['petTypePreferred']*.description
    

    这将为您提供名为 familyFamily 实例的 PetType 描述列表。

    【讨论】:

    • 优秀。 Familiy.hasMany['petTypePreferred'] 工作得很好。那 hasMany 调用到底是做什么的?我在关系字段的域声明中看到过,但不是这样使用的。
    • hasMany 在域类中用于定义 gorm 关联,更多详细信息请参见:grails.org/doc/latest/guide/GORM.html#gormAssociation
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多