Spring3.1とHibernateバリデーター4.2を使用しています。休止状態の検証が2回呼び出されることを確認しました。1つはコントローラーレベルで、次のようなメソッドを使用する場合です。
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@Valid User user, BindingResult result) {....}
そして、エンティティが次の一部として永続化される2回目:
org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(..)
org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreUpdate(..)
org.hibernate.action.EntityUpdateAction.preUpdate(..)
コントローラレベルで有効にして、エラーメッセージ付きのエラーページを表示する方が理にかなっていると思います。そしてとにかく、フローで同じ検証を2回行うのは良くありません。hibernate.validator.autoregister_listeners
hibernate docで、hibernate構成でfalseに設定することでオフにできることがわかりましたが、お勧めしません。
では、検証に推奨されるアプローチは何ですか?confirmPassword
また、私の特定のケースでは、ユーザーがフォームを送信するときに検証に必要ですが、テーブルには必要ないフィールド''があるため、2番目の検証で問題が発生します。したがって、ユーザーを保存、更新する必要がある場合は、confirmPassword
作成するためだけにフィールドを不必要に設定する必要があります。検証パス。