【发布时间】:2019-09-22 06:03:16
【问题描述】:
我有一个表格:
- 名字和姓氏是注册用户的必填字段。
- 新用户的 ssn。
- 所有者的合同号。
因此,在单击提交按钮时,将使用值调用 REST API(连接 API) 来自上述任一组。
我的 bean 类有成员:
- FN
- LN
- 社会保障号
- 合同编号
如何使用 bean/hibernate 验证器进行验证并确定已通过哪个组?
【问题讨论】:
我有一个表格:
因此,在单击提交按钮时,将使用值调用 REST API(连接 API) 来自上述任一组。
我的 bean 类有成员:
如何使用 bean/hibernate 验证器进行验证并确定已通过哪个组?
【问题讨论】:
从 Hibernate 文档中,您可以阅读详细信息
https://hibernate.org/validator/
Hibernate Validator 允许表达和验证应用程序 约束。默认元数据源是注释,其中 通过使用 XML 覆盖和扩展的能力。它没有绑定 到特定的应用层或编程模型并且可用 用于服务器和客户端应用程序编程。但是一个简单的 示例超过 1000 个单词:
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class User {
@NotNull
private String firstName;
@NotNull
private String lastName;
@NotNull
private String ssn;
}
【讨论】:
Bean Validation 最适合用于简单的验证逻辑。如果您的验证需要更复杂,请改用 Spring 的 Validator 接口。
我不知道上下文域,因此我将使用所有 String 字段将您的 bean 称为“表单”作为示例:
public class Form {
private String firstName;
private String lastName;
private String ssn;
private String contractNumber;
// getters and setters
}
然后为这个类创建一个验证器:
public class FormValidator implements Validator {
public boolean supports(Class clazz) {
return Form.class.isAssignableFrom(clazz);
}
public void validate(Object target, Errors errors) {
Form form = (Form) target;
// validation logic
}
}
那么你可以像这样简单地使用它:
Form form = ...;
Validator validator = new FormValidator();
Errors errors = new Errors();
validator.validate(form, errors);
if (errors.hasErrors() {
// not valid
} else {
// is valid
}
【讨论】: