Tag: bean validation

Spring Boot JSR-303/349配置

在我的Spring Boot 1.5.1应用程序中,我正在尝试配置对JSR-303 / JSR-349validation的支持。 我在我的方法中添加了以下注释@NotNull @Size(min = 1) : @Service @Transactional public class DecisionDaoImpl extends BaseDao implements DecisionDao { @Override public Decision create(@NotNull @Size(min = 1) String name, String description, String url, String imageUrl, Decision parentDecision, Tenant tenant, User user) { … } } 我试图从我的测试中调用此方法,但它不会在validation约束上失败。 这是我的测试和配置: @SpringBootTest(classes = { TestConfig.class, Neo4jTestConfig.class }) @RunWith(SpringRunner.class) @Transactional […]

Spring MVC和JSR-303 hibernate条件validation

我有一个我要validation的表单。 它包含2个地址变量。 始终要validationaddress1,必须根据某些条件validationaddress2 public class MyForm { String name; @Valid Address address1; Address address2; } public class Address { @NotEmpty private String street; } 我的控制器自动validation并绑定我的表单obj @RequestMapping(…) public ModelAndView edit( @ModelAttribute(“form”) @Valid MyForm form, BindingResult bindingResult, …) if(someCondition) { VALIDATE form.address2 USING JSR 303 问题是,如果我使用LocalValidatorFactoryBeanvalidation器,我无法重用Spring提供的BinidingResult对象。 绑定不起作用,因为’result’的目标对象是’MyForm’而不是’Address’ validate(form.getAddress2(), bindingResult) //won’t work 我想知道什么是标准/清洁方法来进行条件validation。 我正在考虑以编程方式在我的控制器中创建一个新的BindingResult。 final BindingResult bindingResultAddress2 = […]

BigDecimal的JPA @Size注释

如何在MySQL DECIMAL(x,y)列中使用@Size注释? 我正在使用BigDecimal ,但是当我尝试包含@Size max它不起作用。 这是我的代码: @Size(max = 7,2) @Column(name = “weight”) private BigDecimal weight;

JPA – 找不到类型为enum的validation器

我有一个实体类,其中一个属性使用枚举类型,当我尝试持久化实体时,我得到以下exception: javax.validation.UnexpectedTypeException: No validator could be found for type: model.schema.BaseYesNo 知道为什么会这样吗? 我的想法是,因为它是一个枚举,它应该已经由编译器validation,所以不需要某种validation器。 (以下代码) 实体属性: @Enumerated( EnumType.STRING ) @Column( name = “seeded_flag” ) private BaseYesNo seededFlag; public BaseYesNo getSeededFlag() { return this.seededFlag; } public void setSeededFlag( BaseYesNo seededFlag ) { this.seededFlag = seededFlag; } 和枚举类型的定义: public enum BaseYesNo { YES( “Y” ), NO( “N” ); private […]

自动级联bean-validation递归validation,@ Valid注释

我在Jersey中的REST资源端点validation我的POJO: public class Resource { @POST public Response post(@NotNull @Valid final POJO pojo) { … } } public class POJO { @NotNull protected final String name; @NotNull @Valid protected final POJOInner inner; … } public class POJOInner { @Min(0) protected final int limit; … } 这似乎工作正常。 但是,仅当字段inner具有@Valid注释时,才会validation@Min(0)注释。 将@Valid注释添加到不是基元的每个字段是不对的。 有没有办法告诉beanvalidation器自动递归继续validation,即使没有@Valid注释? 我希望我的POJO如下: public class POJO { @NotNull […]

在@Constraint中清空validatedBy

我注意到所有内置约束对@Constraint的validatedBy参数都有一个空值。 即@Constraint(validatedBy = {}) 首先,为什么允许他们为validatedBy设置一个空值? 我认为你可以将它留空仅用于不需要附加validation的约束组合? 另外,请注意Hibernate Validator仍然可以为每个内置约束找到一个validation器实现类,尽管validatedBy是空的,但是如果我将validatedBy留给我的约束,我的自定义validation器永远不会被拾取。 这是为什么? 谢谢。

Hibernate Validator – @Length – 如何为min和max指定单独的消息?

我在我的网络应用程序中使用Hibernatevalidation器进行表单validation。 我在我的String属性中使用@Length注释,如下所示: @Length(min = 5, message = “The field must be at least 5 characters”) private String myString; 但是,如果String超过50个字符,我需要显示不同的消息。 有没有办法使用开箱即用的@Lengthvalidation器来做到这一点? 我想做的一个例子(编译器不会让我)如下: @Length(min = 5, message = “The field must be at least 5 characters”) @Length(max = 50, message = “The field must be less than 50 characters”) private String myString; 我试过@Max和@Min,他们没有做我想做的事。 任何投入将不胜感激!

hibernate唯一密钥validation

我有一个字段,比如user_name ,它在表中应该是唯一的。 使用Spring / Hibernatevalidationvalidation它的最佳方法是什么?

JSF / Hibernate NotBlankvalidation

我有一个简单的JSF + RichFaces表单,有一些字段,显然是一个支持bean来存储它们。 在那个bean中,所有必需的属性都有validation注释(jsr303 / hibernate),但我似乎无法找到一个注释来检查属性(String)是否为空。 我知道spring模块中有@NotBlank注释,但JSF不支持springvalidation。 有没有简单的方法来检查它,还是我应该编写自己的注释? @Edit:我已经尝试过来自jsr303和hibernate的@NotNull和@NotEmpty,但是他们都失败了我仍然可以发送一个像“”这样的空白字符串。

条件Beanvalidation

我在我的JSF项目中使用Bean Validation。 现在我遇到了一种情况,我想在validation前面的方法时才validation方法。 我举个例子: @AssertTrue(message=”{invalidCode}”) private boolean isValidActivationCode() { … } if(isValidActivationCode()) { @AssertTrue(message=”{alreadyActivated}”) private boolean isAlreadyActivated() { … } } 由于我将收到每个参数的激活码,我想先validation它。 如果它无效,则会导致违规。 如果是这样,我甚至无法检查它是否已被激活(因为代码无效)。 那么,是否有可能实现上述任何内容(if语句的function,我知道这不会起作用,但它显示了我想要完成的任务)。 提前致谢 更新 像Ravi K这样的解决方法提到: @AssertTrue(message=”{invalidCode}”) private boolean isValidActivationCode() { … } @AssertTrue(message=”{alreadyActivated}”) private boolean isAlreadyActivated() { return isValidActivationCode() ? … : true; } 虽然我想知道,有没有一个干净的方法来解决这个问题? 如果没有人能尽快给出答案,我将假设没有干净的解决方案,我将接受Ravi K的解决方法作为这个问题的答案。