Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在春季按需运行验证?_Java_Spring - Fatal编程技术网

Java 是否可以在春季按需运行验证?

Java 是否可以在春季按需运行验证?,java,spring,Java,Spring,我在Spring项目中遇到了以下情况:我们有一堆用户表单,它们只需要按需验证。 例如,假设我有一个类SomeUserData class SomeUserData { //@NotNull private String firstName; //@NotNull //@Min(18) //@Max(100) private Integer age; } 我需要能够保存用户输入的任何数据,即使他将姓名留空或将15作为年龄而不生成任何警告 但当用户请求验证时,

我在Spring项目中遇到了以下情况:我们有一堆用户表单,它们只需要按需验证。 例如,假设我有一个类SomeUserData

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。它被要求保存每个输入而不进行验证,并有一个特定的操作进行验证。因此,基本上,您可以保存一个草稿版本,即使它充满了错误,并在准备就绪时对其进行诊断。