假设我有以下课程:
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()
答案 0 :(得分:2)
你可以这样做:
def getAllFruitSubclasses() {
def fruit = []
grailsApplication.domainClasses.each {
if (it.clazz.superclass == 'com.whatever.Fruit') {
fruit << it.clazz.simpleName
}
}
return fruit
}