Spring MVC的注解@Valid所有控制器?(Spring MVC @Valid annota

2019-10-21 07:15发布

Iv'e看到这个漂亮的机制:

http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/

是否有可能使@Valid注释avaialble所有与验证控制器? 这似乎很多余做到以下几点:

@RequestMapping(value = "/getPlayerAccounts", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
public QueryResultsDTO<PlayerAccountResultDTO> getPlayerAccounts(@RequestBody **@Valid** FilteredQueryRequestDTO filteredQueryRequestDTO,
                                 **BindingResult result**) {

**this.validateDTO(result);**
return this.playerService.getPlayerAccounts(filteredQueryRequestDTO);
}

Reduandant代码:

@有效

BindingResult结果

this.validateDTO(结果);

这似乎是一个循环模式,可能有人已经解决了吗? 也许有问题? 我不关心我所有的方法和控制器将有@Valid登录,最多也收到将是有效的的DTO的呢(因为没有验证的注释被应用到它们)

谢谢

Answer 1:

你不能忽略@Valid注释,因为这是在告诉弹簧,DTO验证方式,这只是春天验证的工作方式。 但有一个BindingResult结果给每个你的方法是没有必要的。 您可以完全省略它。 如果你想要做的事在验证失败时,你可以赶上MethodArgumentNotValidException是从异常处理方法,这种情况下,抛出(例如,你可以使用一类具有@ControllerAdvice注释将包含@ExceptionHandler适用于所有控制器方法-异常处理是一个完全不同的话题,你可以阅读相关的详细信息Spring MVC的异常处理文档 )



文章来源: Spring MVC @Valid annotation for all controllers?