我想验证对象是否验证了一些规则,但是我不确定什么是最好的方法。我有一个Validator类来验证一些对象。
要验证的类如下:
public class Request implements Serializable {
private static final long serialVersionUID = 1L;
private String requestDetail;
private String customerId;
private String firstName;
private String middleName;
private String lastName;
private IdentityDocument identityDocument;
private ContractBureau contract;
public String getRequestDetail() {
return requestDetail;
}
public void setRequestDetail(String requestDetail) {
this.requestDetail = requestDetail;
}
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public IdentityDocument getIdentityDocument() {
return identityDocument;
}
public void setIdentityDocument(IdentityDocument identityDocument) {
this.identityDocument = identityDocument;
}
public ContractBureau getContract() {
return contract;
}
public void setContract(ContractBureau contract) {
this.contract = contract;
}
}
我要检查对象是否为null或为空,请检查如果customerID不为null,则所有其他属性必须为null,请检查合同是否为null或为空,所有其他属性必须为null。目前我有很多,但是我不知道这是否是最好的方法。
有什么建议吗?
答案 0 :(得分:3)
您大致有两种方法:
直接在类的字段上指定验证约束。
The bean validation API可能会对您有所帮助。
@NotEmpty
,@NotBlank
,...是您应该感兴趣的约束。
您可能会找到此API here的示例。
像定义类一样执行一个对象的整体验证,该对象通常作为该验证类的方法的参数传递。
Bean验证API可能仍然使您感兴趣。
每种方法都有其优点和局限性。
您应该意识到它们,并使用与您的需求更好地匹配的方式。
这里是速食的小结。我可能想念一些东西,但我认为它可以为您提供一些见解/想法。
在字段上指定约束
优点:
限制:
示例:通过在实体类本身上指定约束来验证JPA实体是有意义的:您有一种方法来验证每个bean(根据数据模型),并且您想重用这些验证。
定义验证器类
优点:
限制:
示例:使用验证器类根据用户的个人资料来验证用户请求很有意义:您可能根据用户配置文件有不同的规则,并且还希望将其分隔在特定的验证器类中,以简化维护/可读性。