【问题标题】:Spring: method to validate whole objectSpring:验证整个对象的方法
【发布时间】:2014-05-23 22:31:55
【问题描述】:

假设我用一些验证注释定义了我的Entity 类:

public class Entity {
    @Column(unique = true)
    @NotNull
    private String login;

    @NotNull
    private String password;

    @Email
    private String email;
}

我知道可以使用参数中的@Valid 注释和相关的错误对象来验证新的Entity

但是,我需要在不同的方法中间创建一个新的Entity,并且我需要验证构造的实体是否正确(它与类定义中使用注释声明的限制相匹配):

public whateverMethod(...) {
    Entity e = new Entity(a, b, c, ...);
    validate(e); // I need something like this
}

我在 Spring 文档中找不到类似的内容。

有什么帮助吗?

【问题讨论】:

标签: java spring validation spring-mvc


【解决方案1】:

您可以使用LocalValidatorFactoryBean 注入Validator 对象,然后使用该验证器来验证您的实体。

Bean 声明:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

您的服务:

@Service
public class fooService {

    @Autowired
    Validator validator

    public whateverMethod(...) {
        Entity e = new Entity(a, b, c, ...);
        Set<ConstraintViolation<Entity>> = validator.validate(e); 
    }
}

如果你不想注入 bean,你可以这样做:

public class fooClass {

    public whateverMethod(...) {
        Entity e = new Entity(a, b, c, ...);

        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();

        Set<ConstraintViolation<Entity>> = validator.validate(e); 
    }
}

请注意,JSR-303 提供程序(例如 Hibernate Validator)预计会出现在类路径中,并且会被自动检测到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2019-08-11
    • 1970-01-01
    相关资源
    最近更新 更多