gpt4 book ai didi

java - JSR-303 子类验证

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:26 25 4
gpt4 key购买 nike

我有以下类结构

public Abstract class Person {
private String fullName;
private Address address;
private Phone ;
}

class Staff extends Person{
private String staffId;
}

我想使用 JSR-303 对 Staff 类应用验证,其中 Staff 地址和电话的值不能为 null。但是,我还有一些其他类是 Person 类,我不希望应用验证。

我能想到的一种方法是重构 Person 并将字段“地址”和“电话”推送给 Staff,但这意味着重构许多其他类(更不用说这会导致冗余),因此我想避免这种情况。

更新。我已经更改了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。

最佳答案

使用 JSR-330 中的注释来注释 getter,而不是字段。您可以重写 Stuff 中的 getter 并对其进行注释。

关于java - JSR-303 子类验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com