簡體   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