域内的域

时间:2012-05-22 06:48:22

标签: grails groovy

我有两个Domain类: -

class Product {
  ProductType productType
  int openingQuantity
  int unitQuantity
  Date dateCreated
  Date lastUpdated
  boolean active
  static constraints = {
    productType(blank:false,nullable:false)
    openingQuantity(blank:false, nullable:false)
    unitQuantity(blank:false, nullable:false)
    active(nullable:false)
    dateCreated()
    lastUpdated()
  }
}

class ProductType {
  String name
  Date dateCreated
  Date lastUpdated

  static constraints = {
    name(nullable:false, blank:false,maxSize:50,validator: {
      return !ProductType.findByNameIlike(it)
    })
    dateCreated()
    lastUpdated()
  }
}

当我在Product的create.gsp时。它在下拉列表中将productType显示为id。但我的要求是在下拉列表中显示ProductType名称。谁能请你帮忙。

1 个答案:

答案 0 :(得分:1)

您可以在ProductType类上覆盖toString;

String toString() { name }

或者,假设您正在使用默认的脚手架,请更改:

<g:select name="productType.id"
          from="${com.ten.hp.his.pharmacy.ProductType.list()}"
          optionKey="id"
          value="${productInstance?.productType?.id}" />

添加optionValue,如下所示:

<g:select name="productType.id"
          from="${com.ten.hp.his.pharmacy.ProductType.list()}"
          optionKey="id"
          optionValue="name"
          value="${productInstance?.productType?.id}" />