[英]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.