В Grails, как мне получить список всех значений дискриминатора для всех подклассов базового типа?
Допустим, у меня есть следующие классы:
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 ответ
Вы могли бы сделать это:
def getAllFruitSubclasses() {
def fruit = []
grailsApplication.domainClasses.each {
if (it.clazz.superclass == 'com.whatever.Fruit') {
fruit << it.clazz.simpleName
}
}
return fruit
}