0
子類
我有下面的類結構JSR-303的驗證上
public Abstract class Person {
private String fullName;
private Address address;
private Phone ;
}
class Staff extends Person{
private String staffId;
}
我想上一流的工作人員使用JSR-303應用驗證使工作人員的地址和電話不能爲空值。然而,我有一些其他的類是Person類,我不希望驗證被應用。
我可以想到的一種方法是通過重構Person並將字段'address'和'phone'推送給Staff,但這意味着需要重構許多其他類(並且不要提到冗餘性, ),因此我想避免。
更新。 我已經改變了工作人員類,如下所示
public class Staff extends Person {
@NotNull
private String staffEmploymentId;
public String getStaffEmploymentId() {
return staffEmploymentId;
}
public void setStaffEmploymentId(String id) {
this.staffEmploymentId = id;
}
@Override
@NotNull
public void setPhones(List<Phone> phones) {
super.phones = phones;
}
@Override
@NotNull
public void setAddress(Address a) {
super.address = a;
}
@Override
@NotNull
public Address getAddress(){
return super.address;
}
}
不過,我有以下錯誤。
javax.validation.ValidationException: Property setAddress does not follow javabean conventions.
我正在使用Apache BVal,而不是Hibernate Validator。
我試過了,我得到以下異常:javax.validation.ValidationException:屬性setAddress不遵循javabean約定。 –
確保您的存取方法簽名是'public Address getAddress()'和'public void setAddress(Address a)'。您也可能想閱讀[Java Bean規範](http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/),因爲它不是很長。 – VGR