0

エンティティ ExchangeRate {date, currencyFrom, rate} があります。エンティティ currencyFrom にはプロパティ code と Name があります。コンテナに追加します addNestedContainerProperty("currencyFrom.code"); 問題なく動作し、vaadin テーブルにコードが表示されます。

次に、BeanValidationForm を作成し、このフィールドを追加します。BeanValidationValidator が currencyFrom.code の getter を見つけようとし、ExchangeRate 内のメソッド getCurrencyFrom.code を探すため、クラッシュします。

  1. どうしたの?フォームでネストされたプロパティ フィールドを使用して情報を表示するにはどうすればよいですか。

  2. ExchangeRate のネストされたプロパティを変更することは可能ですか?

4

1 に答える 1

1

答えはそこにあります: vaadin フォーラム

  1. BeanValidationForm は、すべてのプロパティがメイン Bean クラスにあると想定します。JPAContainer またはネストされたプロパティについては何も知りません。JSR-303 Bean 検証アノテーションは、コンテナーを介してではなく、Bean クラスから直接アクセスされることに注意してください。

これを回避するには、作成された各 BeanValidationValidator に正しい Bean クラスを与える必要があります。つまり、BeanValidationForm.addField() をオーバーライドして正しい Bean クラスを BVV.addValidator() に与えるか、ヘルパー クラス BeanValidationForm を使用する代わりに BVV を直接使用します。

  1. (少なくとも適切なカスケード設定では) 可能であるはずですが、ネストされたインスタンスのクラスに個別の EntityProvider がある場合、ネストされたエンティティをメイン エンティティの一部としてのみ保存すると、変更が通知されません。
于 2011-06-06T09:58:11.700 に答える