2

假设我有以下课程:

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()
4

1 回答 1

2

你可以这样做:

def getAllFruitSubclasses() {

   def fruit = []

   grailsApplication.domainClasses.each { 
      if (it.clazz.superclass == 'com.whatever.Fruit') {
         fruit << it.clazz.simpleName
      }
   }
   return fruit
}
于 2012-12-06T04:32:32.960 回答