 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Markus Malkusch Guest
|
Posted: Fri Aug 10, 2012 11:23 am Post subject: [JSR 303] Constraints aufheben |
|
|
Wir haben hier ein Spring Projekt, bei dem die Formulareingaben mit
Annotation Constraints validiert werden. Ich denke das benutzt Hibernate
zum Validieren.
Ich habe hier nun eine abgeleitete Klasse bei der ich einen Constraint
aufheben will:
class A {
@Size(min = 1, max = 2)
public String getCountryCode() {
return countryCode;
}
}
class B {
@Size(min = 1, max = 3)
@Override
public String getCountryCode() {
return super.getCountryCode();
}
}
Das funktioniert leider nicht wie gewünscht. Ich habe nun auch gelesen,
dass beim Überschreiben die Constraints aggregiert werden, also der
ursprüngliche max=2 erhalten bleibt. Das finde ich persönlich auch ganz
gut so. Nur leider muss ich dieser abgeleiteten Klasse eine andere Regel
verpassen dürfen.
Habe ich irgendeine Möglichkeit das max=2 von A zu deaktivieren? |
|
| Back to top |
|
 |
Markus Malkusch Guest
|
Posted: Fri Aug 10, 2012 11:24 am Post subject: Re: [JSR 303] Constraints aufheben |
|
|
Wir haben hier ein Spring Projekt, bei dem die Formulareingaben mit
Annotation Constraints validiert werden. Ich denke das benutzt
Hibernate
zum Validieren.
Ich habe hier nun eine abgeleitete Klasse bei der ich einen Constraint
aufheben will:
class A {
@Size(min = 1, max = 2)
public String getCountryCode() {
return countryCode;
}
}
class B extends A {
@Size(min = 1, max = 3)
@Override
public String getCountryCode() {
return super.getCountryCode();
}
}
Das funktioniert leider nicht wie gewünscht. Ich habe nun auch gelesen,
dass beim Überschreiben die Constraints aggregiert werden, also der
ursprüngliche max=2 erhalten bleibt. Das finde ich persönlich auch ganz
gut so. Nur leider muss ich dieser abgeleiteten Klasse eine andere
Regel
verpassen dürfen.
Habe ich irgendeine Möglichkeit das max=2 von A zu deaktivieren? |
|
| Back to top |
|
 |
Guest
|
Posted: Fri Aug 17, 2012 9:42 am Post subject: Re: [JSR 303] Constraints aufheben |
|
|
Markus Malkusch schrieb:
| Quote: | Wir haben hier ein Spring Projekt,
bei dem die Formulareingaben mit
Annotation Constraints validiert werden.
Ich habe hier nun eine abgeleitete Klasse
bei der ich einen Constraint aufheben will:
class A {
@Size(min = 1, max = 2)
public String getCountryCode() {
return countryCode;
}
}
class B extends A {
@Size(min = 1, max = 3)
@Override public String getCountryCode() {
return super.getCountryCode();
}
}
Das funktioniert leider nicht wie gewünscht.
|
Dies wiederspricht übrigens auch dem
Liskovschen Substitutions-Prinzip.
Wenn ein Programmstück eine Instanz der Klasse B
als Instanz der Klasse A behandeln würde,
würde es sich darauf verlassen, dass
countryCode
das Constraint
@Size(min = 1, max = 2)
einhält.
Ursache dieses Problems ist, dass einerseits die
OOP-Polymorphie auf Verhalten und nicht auf
Daten-Strukturen ausgelegt ist.
Andererseits möchte man gern Daten-Strukturen
über Vererbung wiederverwenden.
Das gibt Java eben nicht her, man kann nicht sagen,
dies ist eine Datenstruktur ohne Verhalten.
Eine übliche saubere Lösung ist die Verwendung
von Komposition statt Vererbung.
Grüsse
Heiner |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|