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 に答える