在Grails中,如何获得基类型的所有子类的所有鉴别器值的列表?

时间:2012-12-06 03:08:23

标签: grails discriminator grails-2.0.4

假设我有以下课程:

class Apple extends Fruit { ... }
class Banana extends Fruit { ... }
class Grape extends Fruit { ... }
class Kiwi extends Fruit { ... }

依此类推。我现在需要显示一个下拉列表,其中包含扩展Fruit的所有子类的所有鉴别器值的列表,例如:

<select name="fruitType">
    <option value="Apple">Apple</option>
    <option value="Apple">Banana</option>
    <option value="Apple">Grape</option>
    <option value="Apple">Kiwi</option>
</select>

这很容易为其中4个硬编码,但在我的实际域中,这个列表有可能变得很长。有没有办法获得实现基类型的所有子类的所有鉴别器值的列表?像这样的东西,例如:

Fruit.class.getAllDiscriminatorValues()

1 个答案:

答案 0 :(得分:2)

你可以这样做:

def getAllFruitSubclasses() {

   def fruit = []

   grailsApplication.domainClasses.each { 
      if (it.clazz.superclass == 'com.whatever.Fruit') {
         fruit << it.clazz.simpleName
      }
   }
   return fruit
}