【发布时间】:2013-11-24 16:44:45
【问题描述】:
我有以下类结构
public Abstract class Person {
private String fullName;
private Address address;
private Phone ;
}
class Staff extends Person{
private String staffId;
}
我想使用 JSR-303 对 Staff 类应用验证,其中 Staff address 和 phone 不能具有 null 值。但是,我还有一些其他类是 Person 类,我不希望应用验证。
我能想到的一种方法是重构 Person 并将“地址”和“电话”字段推送给员工,但这意味着重构许多其他类(更不用说这会导致冗余) ,因此我想避免一些事情。
更新。 我已经更改了 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。
【问题讨论】:
标签: java bean-validation