在Spring项目中,我遇到以下情况:我们有一堆用户表单,只需要根据需要对其进行验证。 例如,假设我有一个SomeUserData类
class SomeUserData {
//@NotNull
private String firstName;
//@NotNull
//@Min(18)
//@Max(100)
private Integer age;
}
我需要能够保存用户输入的所有数据,即使他将名称保留为空或将年龄设置为15而不产生任何警告。
但是当用户要求进行验证时,我确实需要通过验证来运行数据。
有人知道解决此问题的方法吗?如果我没有提供足够的详细信息,请告诉我。
答案 0 :(得分:0)
为此,我建议使用不同的类:SomeUserData和SomeUserDataStrict。此外,您可以有不同的验证集,例如成熟度等级(例如美国电影定价协会的电影等级系统):SomeDataG,SomeDataPG,SomeDataPG13,SomeDataR,SomeDataNC17
答案 1 :(得分:0)
编写自定义验证器,例如,该验证器的validate方法具有可选的布尔参数,例如“ validateBusiness”。如果存在该参数并将其设置为TRUE,则执行验证,否则保存未经验证的实体。
答案 2 :(得分:0)
要有条件地验证您的类对象,可以在您的类中添加一个字段,例如说validateOnDemand
布尔字段。
class SomeUserData {
private String firstName;
private Integer age;
private boolean validateOnDemand;
}
然后在具有条件验证逻辑的方法上使用@AssertTrue
@AssertTrue
public boolean validateFirstNameOnDemand() {
if(this.validateOnDemand){
// your logic to validate/invalidate
}else{
return true; // validate
}
}
如果上述方法返回true
,则请求对象在返回false
的情况下得到了其他验证,如果传入了AssertionException
参数,它将抛出一条带有消息的@AssertTrue
>