繁体   English   中英

Spring请求验证不起作用

[英]Spring request validation not working

我们正在尝试使用spring对请求进行输入验证。 我们遵循了本教程: http : //spring.io/guides/gs/validating-form-input/,但它似乎不起作用。 看起来@NotNull和/或@Valid由于某种原因而被忽略了。

例如,我们有以下控制器:

@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
public void test(@RequestBody @Valid TestDTO testDTO, BindingResult result) {

   this.validateDTO(result);
}


protected void validateDTO(BindingResult result) {

if (result.hasErrors()) {
    List<FieldError> fieldErrors = result.getFieldErrors();

    throw new FieldValidationException(fieldErrors);
  }
}

TestDTO是以下类别:

public class TestDTO {

    @NotNull
    private String test;
...
}

因此,我们期望在发布没有test字段的请求时,将抛出FieldValidationException 但是,由于某些原因result.hasErrors() = false不会发生这种情况。

有人知道为什么会这样吗? 以及如何解决?

编辑:我们试图将验证器bean添加到我们的xml中:

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

但是现在我们得到了以下异常,我们启动了服务器: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory 我们具有以下gradle依赖项,据我了解,这些版本应该兼容:

compile group:'javax.validation', name:'validation-api', version:'1.1.0.Final'
compile group:'org.hibernate', name:'hibernate-validator', version:'5.2.2.Final'

我认为注释@Valid应该在@RequestBody之前

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM