2011-07-03 22 views
0

私は、Beanのプロパティと対応する値をレンダリングするタグを作成しようとしています。私は、デフォルトの動作がBeanからのすべてのプロパティをレンダリングすることを望んでいます。だから私は何とか渡されたbeanからすべてのプロパティ名を取得する必要があります。GrailsでBeanプロパティ名を取得する

私はpropertiesマップを使用することができると考えましたが、豆の特性にもかかわらず、他にもあることがあります。手で管理しなければならず、エラーが発生する可能性があります。

私はドメインクラスには便利だが、コマンドオブジェクトには役に立たないDefaultGrailsDomainClassを使うと考えた。

似たようなことをやったことがありますか?有用なものがありましたか?

+0

あなたはbean-fieldsプラグインを見ましたか?あなたがその機能の一部を再実装しようとしているかもしれないように聞こえます –

+0

はい、私はしました。私がBeanフィールドからやろうとしていることと異なる点の1つは、オブジェクトをタグに渡すだけで、すべてのプロパティを一度にレンダリングしたいということです。 Beanフィールドでは、どのプロパティをレンダリングするかを明示的に指示する必要があります。 – jjczopek

答えて

2

などがpersistentPropertiesもある、hereと述べました。しかし、あなたはGrailsDomainClass.propertiesが必要だと信じています - Groovy propertiesと混同しないでください。前者はドメインクラスです。

レンダリングでは、GrailsDomainClassProperty.naturalNameも便利です。

+0

今のところ私は機能を絞り込み、Beanレンダリングだけを許可し、GrailsDomainClassを使用します。たぶん私はコマンドオブジェクトのためにそれを利用できるようにしようとします。 – jjczopek

+0

コマンドはBeanではありません。最近私はこれを学びました。たぶん 'Class.declaredFields/declaredMethods'を使うことができます。 –

0

私はpropertiesを使って同様のことをしましたが、問題はありません。私のコードは:

value.properties.entrySet().each { Map.Entry it -> 
    println "$it.key = $it.value" 
} 
+0

私はそれが可能であることは承知していますが、このようなシナリオでは、私はmetaClass、トランジェント、クラスなどのようなエントリを手作業で省略しなければなりません。また関係がある場合は、手で管理する必要があります。 – jjczopek

+0

ああ、私はそれを得た。私の場合、それは必要ではありません –

関連する問題