标签: hibernate-validator

无法找到spring3 mvc @Valid注释

我尝试使用@Valid注释,但是eclipse总是给出"有效无法解析为类型"错误.我正在使用spring3库.

我已将hibernate-validator-4.1.0.Final.jar导入到我的WEB-INF/lib目录中.但是,这并没有解决问题.

任何帮助表示赞赏!

java spring hibernate-validator

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

Hibernate Validator中的ClassValidator在哪里?

使用hibernate-validator-4.2.0.Final.jarClassValidator类无处可寻.该版本的官方PDF 3.1.0.GA显示它存在于org.hibernate.validator包内,但在我的罐子和官方仓库里面它不存在.

这让我相信:

  • 它已被弃用以代替其他东西; 要么
  • 它刚刚移动到某处,我似乎无法找到它!

如果它已被弃用,那么使用注释和检查某些内容是否有效的最佳方法是什么?如果它已被弃用,那么这样做的" "方式是使用:

ClassValidator<SomeBeanClass> validator = new ClassValidator<SomeBeanClass>();
SomeBeanClass bean = new SomeBeanClass();

// use bean

InvalidValues[] badVals = validator.getInvalidValues(bean);
Run Code Online (Sandbox Code Playgroud)

如果它被移动了,那么它在哪里?!?!提前致谢!

java hibernate-validator

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

如何进行javax验证只显示一条错误消息

假设我在这样的字段上进行验证:

@NotEmpty
@Digits(integer = 3, fraction = 0)
private String code;
Run Code Online (Sandbox Code Playgroud)

目前,如果我将表单字段留空,我会使用Spring MVC和Hibernate验证.有没有办法只显示@NotEmpty消息?

java spring-mvc hibernate-validator bean-validation

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

Spring MVC表单验证 - 客户端发送的请求在语法上是不正确的

我正在尝试将表单验证添加到工作应用程序.我首先在登录表单中添加了一个NotNull检查.我正在使用Bean Validation api的Hibernate impl.

这是我写的代码

@Controller
@RequestMapping(value="/login")
@Scope("request")
public class LoginController {

  @Autowired
  private CommonService commonService;

  @Autowired
  private SiteUser siteUser;

  @InitBinder
  private void dateBinder(WebDataBinder binder) {
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
      CustomDateEditor editor = new CustomDateEditor(dateFormat, true);
      binder.registerCustomEditor(Date.class, editor);
  }

  @ModelAttribute
  protected ModelMap setupForm(ModelMap modelMap) {
    modelMap.addAttribute("siteUser", siteUser);
    return modelMap;
  }

  @RequestMapping(value="/form", method = RequestMethod.GET)
  public ModelAndView form(ModelMap map){
    if (siteUser.getId() == null){
      map.addAttribute("command",new SiteUser());
      return new ModelAndView("login-form",map);
    }else {
      return new ModelAndView("redirect:/my-dashboard/"+siteUser.getId());
    }
  }

  @RequestMapping(value="/submit", method=RequestMethod.POST)
  public ModelAndView submit(@Valid …
Run Code Online (Sandbox Code Playgroud)

validation spring-mvc hibernate-validator tomcat7

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

Annotation 中的多个验证选项

我的问题是这个问题的一个分支

我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有办法对一个注释使用多个验证器,以便我可以将 @phone 用于我的电话对象和我的联系信息对象?

喜欢
@Constraint(validatedBy = {PhoneIsValid.class, PhoneIsValid2.class})
工作吗?(想法是一个验证器处理电话对象,另一个处理联系信息对象。)

annotations hibernate-validator bean-validation

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

Hibernate Validator抛出异常"找不到类型为:java.math.BigDecimal的验证器"

我正在使用hibernate验证器在实体上使用注释从Spring MVC进行验证.

我的实体中有一个BigDecimal属性,我需要检查范围值验证.如下

@NotNull(message = "errors.range_1_5_Trades.mandatory")
@Pattern(regexp = "(^$[0-9])", message = "errors.only.numbersAllowed")
@Range(min = 1, max = 5, message = "errors.invalid.range")
@Column(name = "FEE_LESS_THAN_5")
private BigDecimal feeLessThan_5;
Run Code Online (Sandbox Code Playgroud)

但是当我在Spring Controller中使用@Valid注释验证它时,它会抛出异常,如下所示

javax.validation.UnexpectedTypeException: No validator could be found for type: java.math.BigDecimal
    at org.hibernate.validator.engine.ConstraintTree.verifyResolveWasUnique(ConstraintTree.java:383)
    at org.hibernate.validator.engine.ConstraintTree.findMatchingValidatorClass(ConstraintTree.java:364)
    at org.hibernate.validator.engine.ConstraintTree.getInitializedValidator(ConstraintTree.java:313)
    at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:144)
    at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:117)
    at org.hibernate.validator.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:84)
    at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:452)
    at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:397)
    at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:361)
    at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:313)
    at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:139)
    at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:86)
    at org.springframework.validation.DataBinder.validate(DataBinder.java:711)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:807)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) …
Run Code Online (Sandbox Code Playgroud)

hibernate spring-mvc hibernate-validator

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

在测试时,Spring注入在自定义hibernate验证器中不起作用

测试配置类

@Configuration
@Import( value = GlobalCoreContext.class)
public class TestConfiguration {

    @Bean
    public Validator createValidatorFactory() {
        return Validation.buildDefaultValidatorFactory().getValidator();
    }

}
Run Code Online (Sandbox Code Playgroud)

ValidatorClass

public final class LoginAttemptsExceededValidatorLoginId implements ConstraintValidator<LoginAttemptsExceeded, String> {

    @Resource
    private LoginDao loginDao;

    private LoginAttemptsExceeded loginAttemptsExceeded;

    @Override
    public void initialize(final LoginAttemptsExceeded loginAttemptsExceeded) {
        this.loginAttemptsExceeded = loginAttemptsExceeded;
    }

    /**
     * Validation fails if the login attempts have exceeded the preset number.
     * @param loginId
     * @param constraintValidatorContext
     * @return
     */
    @Override
    public boolean isValid(final String loginId, final ConstraintValidatorContext constraintValidatorContext) {
        if(StringUtility.IsEmpty(loginId)) return …
Run Code Online (Sandbox Code Playgroud)

testng spring spring-mvc hibernate-validator

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

Hibernate Validator布尔逻辑

我正在考虑使用布尔逻辑与我的bean验证使用Hibernate验证器在AND约束不足的情况下.我发现可以通过使用文档中描述@ConstraintComposition注释创建新注释来更改此默认行为.该文档提供了以下示例.

@ConstraintComposition(OR)
@Pattern(regexp = "[a-z]")
@Size(min = 2, max = 3)
@ReportAsSingleViolation
@Target({ METHOD, FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = { })
public @interface PatternOrSize {
    String message() default "{org.hibernate.validator.referenceguide.chapter11." +
            "booleancomposition.PatternOrSize.message}";

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

    Class<? extends Payload>[] payload() default { };
}
Run Code Online (Sandbox Code Playgroud)

使用这种@PatternOrSize验证约束意味着输入字符串或者小写具有2和3之间的尺寸现在,这引发了几个问题:

  • 相信必须创建一个新的注释来改变默认的布尔逻辑行为.它是否正确?如果可以在类字段中定义布尔逻辑,那将非常好,但它可能不可能?
  • 是否有可能在不创建自定义验证器的情况下进一步自定义布尔逻辑行为,例如定义ANDOR同时?我找不到任何暗示这是可能的东西,但也许我错过了一些东西.
  • 最重要的是:是否可以使参数@Pattern@Size约束动态化?因为否则我想我必须为我需要的每个参数组合定义一个新的注释.仅仅为了更改参数而定义一个新的注释@Size似乎不可行,但可能是必要的?

先感谢您.

java validation hibernate-validator bean-validation

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

是否可以为约束违规模板消息添加消息参数?

我有我的自定义validator,我想为它添加一些错误消息.所以我有下一个代码:

@Override
public boolean isValid(final String label,
                       final ConstraintValidatorContext constraintValidatorContext) {
     constraintValidatorContext.disableDefaultConstraintViolation();

     if(label.length() > MAX_LENGTH) {
          constraintValidatorContext
                  .buildConstraintViolationWithTemplate("{error.maxLength}")
                  .addConstraintViolation();
          return false;
     }
     ...
}
Run Code Online (Sandbox Code Playgroud)

我的消息看起来像error.maxLength=You have exceeded max length of {0},所以它有参数maxLength.

在构建约束违规时可以添加它吗?

hibernate-validator javax

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

Bean验证-JSR-303 DuplicateItemCheck以查找Java中的列表

是否有任何标准的bean验证批注来检查Java集合中的重复项。或任何人都实现了自定义验证,以使用bean验证来检查列表中的重复项。

例如



    public class MySecurityRequest{
        private Date dob;

        @DuplicateNotAllowed
        private List securityQuestions;
    }

    public class SecurityQuestion{
      private String question;
      private String answer;
    }

Run Code Online (Sandbox Code Playgroud)

在这里,我需要确保列表中的问题不再重复。是否有人面对过类似的问题?

java validation spring hibernate-validator

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