の設計に問題がありVetoableChangeListenerます。VetoableChangeListenerモデル クラスのプロパティの変更をリッスンするインターフェイスを実装します。
vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException
…変更を DB に保存しようとしましたが、失敗する可能性があります (SQLExceptionたとえば、によって)。失敗した場合は、 をスローPropertyVetoExceptionしてモデルの変更を元に戻します。
モデルはVetoableChangeSupport(JDK クラス) に委譲されており、それを受け取るとそれをキャッチし、/を交換して (後で例外を再スローする) PropertyVetoExceptionALL に戻すことを通知し、イベントが再びクラスに来るようにします。 DBに再度保存するなど...VetoableChangeListeneroldValuenewValue
誰も をスローしないまでモデルが変更されないという回避策があります。そのPropertyVetoExceptionため、VetoableChangeListener最初に、データベースに保存するデータがモデルのデータと等しくないかどうかを確認します。単に変更を無視します。
別のより良い回避策はありますか?