gpt4 book ai didi

java - 对 'same' 类进行多次验证的策略

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:05 27 4
gpt4 key购买 nike

假设我有一个 Address 类,它是 ContactVendor 类的子类。在 Contact 的情况下,企业只真正关心 Address 的 City 字段是必需的(Contacts 更多关于人的姓名和电话及其位置 - 城市)。然而,对于可能从我们这里收到纸质邮件的Vendor,我们需要完整的地址信息,所以 Line1CityState/ProvinceCountryPostalCode/Zip 都是必需的。

我的想法是创建一个在 City 字段上使用 @NotBlankContactAddress,然后创建一个子类 VendorAddress@NotBlank 装饰更多的字段。

我只是不确定这是最好的方法(而且它使我的域对象和 Hibernate 映射变得复杂)。有没有人有正确模式的提示?

编辑:更多细节

public class Contact {
private Address address;
}

public class Vendor {
private Address address;
}

public class Address {

private String line1;

@NotBlank
private String city;

private String state;
private String country;
private String postalCode;

}

Address 那么,City 上只能有 @NotBlank,因为并非所有 Address 的使用都需要其他字段。

我还应该说,我想在 JSF 中使用这些类(除了在我的服务层中手动调用它之外,它还进行“免费验证”)。这是一个“传统的”JSF/Spring/Hibernate 应用程序。

也许我想用 http://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html_single/#chapter-groups ?不确定这如何与 JSF 的“免费”验证交互

最佳答案

在我看来,您应该将保存 数据与验证 数据分开 - 因为后者是特定于上下文的。您可能希望将一些“核心”验证放入 Address ,然后将其他 validator 分离到 ContactAddressValidator 中和 VendorAddressValidator类(可能实现某种 Validator<T> 接口(interface))。

这与您以不同方式对同一类型进行排序的方法相同,实现了 Comparator<T>。多次相同 T , 但在不同的类(class)。

关于java - 对 'same' 类进行多次验证的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986930/

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