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