Eigenschaften, die es einem externen Programmteil ermoeglichen, eine Aenderung abzulehnen, heissen eingeschraenkte Eigenschaften (constrained properties). D.h. nicht nur das Bean, welches die Eigenschaft zur Verfuegung stellt, kann den neuen Wert auf Gueltigkeit testen (siehe A.2.2), sondern es ist auch moeglich registrierte ``Zuhoerer'' vor der Aenderung nach ``Einwaenden'' zu befragen. Dies wird mir Hilfe eines sogenannten Vetos abgebildet. Die Signatur von nicht eingeschraenkten Eigenschaften wird wie folgt, um die Moeglichkeit einer Veto-Ausnahme erweitert:
public <PropertyType> get<PropertyName>(); public void set<PropertyName>(<PropertyType> value) throws java.beans.PropertyVetoException;
Objekte die an dieser Gueltigkeitspruefung mitwirken wollen, muessen die java.beans.VetoableChangeListener Schnittstelle implementieren. Diese Schnittstelle enthaelt eine Methode vetoableChange() die ebenfalls ein java.beans.PropertyChangeEvent (wie bei gebundenen Eigenschaften) uebergeben bekommt und ggf. eine java.beans.PropertyVetoExeption ausloest. Beans die eingeschraenkte Eigenschaften anbieten muessen demnach auch die Registrierungsmethoden zur Verfuegung stellen:
public void addVetoableChangeListener(VetoableChangeListener p); public void removeVetoableChangeListener(VetoableChangeListener p);
Die Ereignisquelle muss die Ausnahme bearbeiten. Auch fuer diese Funtionalitaet wird eine Klasse im java.beans Packet zur Verfuegung gestellt VetoableChangeSupport. Siehe A.2.2 fuer ein Beispiel zu eingeschraenkten Eigenschaften.