标签: bean-validation

在@Constraint中清空validatedBy

我注意到所有内置约束都具有validatedBy参数的空值@Constraint.即@Constraint(validatedBy = {})

首先,为什么他们允许空值validatedBy?我认为你可以将它留空仅用于不需要附加验证的约束组合?

另外,请注意Hibernate Validator仍然可以为每个内置约束找到一个验证器实现类,尽管它validatedBy是空的,但如果我将validatedBy留给我的约束,我的自定义验证器永远不会被拾取.这是为什么?

谢谢.

java hibernate-validator bean-validation

16
推荐指数
2
解决办法
4285
查看次数

验证正整数

我想只允许数字字段的正整数,包括零.如何使用JSR 303定义此验证.
我试过

  1. @Min(value=0 message = "msg1") - 但它允许浮点值如1.2.

  2. @Digits(fraction = 0, integer = 10, message ="msg2") - 它接受负值.

  3. @Min(value=0, message = "msg1" )
    @Digits(fraction = 0, integer = 10, message ="msg2")-它工作正常,但有时双方的信息,即msg1msg2被显示.

有什么建议?

谢谢!

java bean-validation

16
推荐指数
4
解决办法
5万
查看次数

在ConstraintValidator中注入服务[Bean Validator - JSR 303] Spring

下午好,

我在Bean验证器(JSR 303)中注入服务时遇到问题.我将执行验证,但我需要在我的数据库中验证此记录;

当我使用我的服务时,它会抛出NullPointerException;

例外:

Exception in thread "main" javax.validation.ValidationException: HV000028: Unexpected exception during isValid call.
at org.hibernate.validator.internal.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:294)
at org.hibernate.validator.internal.engine.ConstraintTree.validateConstraints(ConstraintTree.java:164)
at org.hibernate.validator.internal.engine.ConstraintTree.validateConstraints(ConstraintTree.java:125)
at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:86)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:442)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:387)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:351)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:303)
at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:133)
at net.pontoall.hemisphere.core.validation.impl.TesteValidator.main(TesteValidator.java:25)



Caused by: java.lang.NullPointerException
at net.pontoall.hemisphere.core.validation.impl.UsuarioValidatorImpl.doCheckLogin(UsuarioValidatorImpl.java:48)
at net.pontoall.hemisphere.core.validation.impl.UsuarioValidatorImpl.isValid(UsuarioValidatorImpl.java:26)
at net.pontoall.hemisphere.core.validation.impl.UsuarioValidatorImpl.isValid(UsuarioValidatorImpl.java:1)
at org.hibernate.validator.internal.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:291)
... 9 more
Run Code Online (Sandbox Code Playgroud)

注解:

@Target(value = ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = UsuarioValidatorImpl.class)
public @interface UsuarioValidator {

String message() default "{net.pontoall.hemisphere.validation.UsuarioValidator.message}";

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

}
Run Code Online (Sandbox Code Playgroud)

ValidatorImpl:

public class …
Run Code Online (Sandbox Code Playgroud)

validation spring bean-validation

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

多个正则表达式@ Pattern用于1场?

我试图将多个@Pattern注释应用于单个字段:

@Pattern(regexp = "(?=.*[0-9])", message = "Password must contain one digit.")
@Pattern(regexp = "(?=.*[a-z])", message = "Password must contain one lowercase letter.")
@Pattern(regexp = "(?=.*[A-Z])", message = "Password must contain one uppercase letter.")
@Pattern(regexp = "(?=\S+$)", message = "Password must contain no whitespace.")
private String password;
Run Code Online (Sandbox Code Playgroud)

但是,我不能这样做.我想要在密码字段上违反正则表达式约束的单个邮件.这可能吗?

我的替代方案是使用JSF 2.0 f:validatorRegex标记.

regex java-ee bean-validation

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

抛出javax.validation.ConstraintViolationException时获取字段名称

当PathVariable'name'未通过验证时,将抛出javax.validation.ConstraintViolationException.有没有办法在抛出的javax.validation.ConstraintViolationException中检索参数名称?

@RestController
@Validated
public class HelloController {

@RequestMapping("/hi/{name}")
public String sayHi(@Size(max = 10, min = 3, message = "name should    have between 3 and 10 characters") @PathVariable("name") String name) {
  return "Hi " + name;
}
Run Code Online (Sandbox Code Playgroud)

spring bean-validation

15
推荐指数
4
解决办法
1万
查看次数

什么是约束点验证@Null?

我检查可用约束的列表javax.validation包,我注意到,有一个注释@null迫使现场为空.

如果我已经知道它应该为null,我不明白将它添加到我的字段有什么意义.

例如,看看这个类:

public class MyClass{

    @NotNull
    private String myString1;

    @Null
    private String myString2;

    // getter setters...
}
Run Code Online (Sandbox Code Playgroud)

@NotNull完全有道理.我不希望myString1是空的.但@NullmyString2没用.有一个字段应始终为null的重点是什么.

constraints java-ee bean-validation

15
推荐指数
2
解决办法
4004
查看次数

Spring Boot 3.0 包 javax.validation 不存在

我正在尝试使用Bean Validation 1.1 支持的方法参数验证功能。例如,以下方法会触发第一个参数的验证,确保其有效:

public String generateOtp(@Valid TotpAuthenticatorForm form, BindingResult bindingResult)
Run Code Online (Sandbox Code Playgroud)

当我构建Spring Boot 2.7.7项目时一切正常,但构建Spring Boot 3.0.1项目失败并出现编译错误:

package javax.validation does not exist
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

bean-validation spring-boot jakarta-migration

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

如何在actionListener或action方法中执行JSF验证?

我的Bean验证在我的应用程序中运行良好.现在我想检查新用户是否选择了已经选择的用户名.

在actionlistener中,我有检查数据库的代码,但如果用户选择已存在的用户名,如何强制用户被发送回他们所在的页面?

validation jsf bean-validation

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

什么用,托管bean(支持bean)或实体bean?

我看到很多将bean标记为实体bean(@Entity)和命名bean(CDI)的示例,以避免创建2个类(托管bean和实体bean)以及使用Bean Validation以便可以执行验证在客户端和服务器上.

那么我是否应该使用单个类,是否存在任何问题,或者我是否应该使用托管bean中的数据创建托管bean或服务层创建实体bean?

entity bean-validation jsf-2 managed-bean

14
推荐指数
1
解决办法
6192
查看次数

使用HibernateValidator进行交叉字段验证不会显示任何错误消息

我正在使用此答案中HibernateValidator指定的表格上的两个字段"password"和"confirmPassword"进行验证.以下是约束描述符(验证器接口).

package constraintdescriptor;

import constraintvalidator.FieldMatchValidator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;

@Target({TYPE, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = FieldMatchValidator.class)
@Documented
public @interface FieldMatch
{
    String message() default "{constraintdescriptor.fieldmatch}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

    /**
     * @return The first field
     */
    String first();

    /**
     * @return The second field
     */
    String second();

    /**
     * Defines several <code>@FieldMatch</code> annotations on the …
Run Code Online (Sandbox Code Playgroud)

spring jsp spring-mvc hibernate-validator bean-validation

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