Java 是否可以在春季按需运行验证?
我在Spring项目中遇到了以下情况:我们有一堆用户表单,它们只需要按需验证。 例如,假设我有一个类SomeUserDataJava 是否可以在春季按需运行验证?,java,spring,Java,Spring,我在Spring项目中遇到了以下情况:我们有一堆用户表单,它们只需要按需验证。 例如,假设我有一个类SomeUserData class SomeUserData { //@NotNull private String firstName; //@NotNull //@Min(18) //@Max(100) private Integer age; } 我需要能够保存用户输入的任何数据,即使他将姓名留空或将15作为年龄而不生成任何警告 但当用户请求验证时,
class SomeUserData {
//@NotNull
private String firstName;
//@NotNull
//@Min(18)
//@Max(100)
private Integer age;
}
我需要能够保存用户输入的任何数据,即使他将姓名留空或将15作为年龄而不生成任何警告
但当用户请求验证时,我确实需要通过验证运行数据
有人知道解决这个问题的方法吗?如果我没有提供足够的详细信息,请告诉我。我建议为此使用不同的类:SomeUserData和SomeUserDataStrict。此外,您可以有不同的验证集,如成熟度评级(如美国电影评级系统的Motion Pricture Association):SomeDataG、SomeDataPG、SomeDataPG13、SomeDataR、SomeDataNC17编写自定义验证程序,例如,该验证程序的验证方法有一个可选的布尔参数,例如“validateBusiness”。如果该参数存在并设置为TRUE,则执行验证,否则保存实体而不进行验证。要有条件地验证类对象,可以向类中添加一个字段,例如
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
,则请求对象将以其他方式验证,如果传入@AssertTrue
参数,它将抛出带有消息的AssertionException
,为什么在用户请求之前数据的有效性无关紧要?@Kayaman Business requirement。它被要求保存每个输入而不进行验证,并有一个特定的操作进行验证。因此,基本上,您可以保存一个草稿版本,即使它充满了错误,并在准备就绪时对其进行诊断。