标签: bean-validation

使用Hibernate Validator进行交叉字段验证(JSR 303)

在Hibernate Validator 4.x中是否有(或第三方实现)交叉字段验证的实现?如果不是,那么实现交叉字段验证器的最简洁方法是什么?

例如,如何使用API​​来验证两个bean属性是否相等(例如验证密码字段是否与密码验证字段匹配).

在注释中,我希望有类似的东西:

public class MyBean {
  @Size(min=6, max=50)
  private String pass;

  @Equals(property="pass")
  private String passVerify;
}
Run Code Online (Sandbox Code Playgroud)

validation hibernate-validator bean-validation

228
推荐指数
8
解决办法
15万
查看次数

109
推荐指数
3
解决办法
5万
查看次数

如何组合验证两个或多个字段?

我正在使用JPA 2.0/Hibernate验证来验证我的模型.我现在有一种情况,必须验证两个字段的组合:

public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

该模型是无效的,如果这两个getValue1()getValue2()null和有效的,否则.

如何使用JPA 2.0/Hibernate执行此类验证?使用简单的@NotNull注释,两个getter都必须为非null才能通过验证.

java jpa bean-validation jpa-2.0

74
推荐指数
4
解决办法
7万
查看次数

JSR 303验证,如果一个字段等于"某事",那么这些其他字段不应为空

我想用JSR-303做一点自定义验证javax.validation.

我有一个领域.如果在此字段中输入了某个值,我想要求其他几个字段不是null.

我想弄清楚这一点.不确定我会称之为什么来帮助找到解释.

任何帮助,将不胜感激.我对此很新.

目前我正在考虑自定义约束.但我不确定如何从注释中测试依赖字段的值.基本上我不确定如何从注释访问面板对象.

public class StatusValidator implements ConstraintValidator<NotNull, String> {

    @Override
    public void initialize(NotNull constraintAnnotation) {}

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if ("Canceled".equals(panel.status.getValue())) {
            if (value != null) {
                return true;
            }
        } else {
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是panel.status.getValue();给我带来麻烦..不知道如何实现这一目标.

java validation bean-validation

72
推荐指数
4
解决办法
8万
查看次数

来自javax.validation.constraints的注释无效

什么样的配置,需要使用注释来自javax.validation.constraints@Size,@NotNull等等?这是我的代码:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class Person {
      @NotNull
      private String id;

      @Size(max = 3)
      private String name;

      private int age;

      public Person(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
      }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在另一个类中使用它时,验证不起作用(即创建对象时没有错误):

Person P = new Person(null, "Richard3", 8229));
Run Code Online (Sandbox Code Playgroud)

为什么这不适用于idname?我还需要做什么?

java spring annotations constraints bean-validation

48
推荐指数
7
解决办法
9万
查看次数

JSR 303:如何验证带注释的对象的集合?

是否可以验证JSR 303中的对象集合 - Jave Bean Validation,其中集合本身没有任何注释,但包含的元素是什么?

例如,由于第二个人的名称为空,是否可能导致约束违规:

List<Person> people = new ArrayList<Person>();
people.add(new Person("dave"));
people.add(new Person(null));

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<List<Person>>> validation = validator.validate(people);
Run Code Online (Sandbox Code Playgroud)

java jsr hibernate-validator bean-validation

45
推荐指数
2
解决办法
4万
查看次数

JSR 303 Bean验证+ Javascript客户端验证

在服务器端使用JSR 303 bean验证时,使用Javascript(最小代码重复)执行客户端表单验证的最佳方法是什么?我目前正在使用Spring 3Hibernate Validator.

javascript java validation spring bean-validation

44
推荐指数
2
解决办法
1万
查看次数

从另一个类的静态方法初始化Spring bean?

我试图创建Hibernate Validator bean,并遇到这个问题,从另一个类中的静态工厂方法创建一个bean.我找到了一种Spring方法来初始化我的Validator bean(底部的解决方案),但问题本身仍未解决.验证器在此处用作示例案例.

这就是我在Java中创建Validator实例的方法

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Run Code Online (Sandbox Code Playgroud)

这就是我尝试在applicationContext.xml中创建bean的方法

<bean id="validatorFactory" 
    class="javax.validation.ValidatorFactory" 
    factory-method="javax.validation.Validation.buildDefaultValidatorFactory" />

<bean id="validator" 
    class="javax.validation.Validator" 
    factory-bean="validatorFactory"
    factory-method="getValidator" />
Run Code Online (Sandbox Code Playgroud)

我的理解是,在"工厂方法"中,您只能访问在"class"参数中定义的类中定义的静态方法.由于方法buildDefaultValidatorFactory()是静态的,我不能创建一个Validation实例,并将它作为validatorFactory的"factory-bean"给出,如下所示:

<bean id="validation" class="javax.validation.Validation" />

<bean id="validatorFactory" 
    class="javax.validation.ValidatorFactory" 
    factory-bean="validation"
    factory-method="buildDefaultValidatorFactory" />
Run Code Online (Sandbox Code Playgroud)

这最终会出现错误消息

"检查是否存在具有指定名称的方法,并且它是非静态的 "

问题是你如何在Spring的这种情况下创建bean?

这就是我解决Validator问题的方法:

<bean id="validator"
  class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
Run Code Online (Sandbox Code Playgroud)

java spring bean-validation applicationcontext

42
推荐指数
1
解决办法
6万
查看次数

是否有可用的JSR-303(bean验证)实现?

我知道有非标准框架,如commons-validator和hibernate验证器.

我想知道是否有人知道官方标准的实施.

java validation bean-validation

40
推荐指数
3
解决办法
3万
查看次数

JPA和Bean Validation的唯一约束

我想对@UniqueBean Validation 有一个约束,但标准不提供.如果我使用JPA,@UniqueConstraint我就没有独特的验证和错误报告机制.

有没有办法定义@Unique为Bean Validation约束并将其与JPA组合,以便JPA创建一个具有唯一约束的列,并检查值是否唯一?

java validation jpa unique bean-validation

37
推荐指数
2
解决办法
4万
查看次数