【发布时间】:2015-01-15 19:35:41
【问题描述】:
我见过这种不错的机制:
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/
是否可以使 @Valid 注释对所有具有验证的控制器都可用?执行以下操作似乎非常多余:
@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);
}
冗余代码:
@Valid
BindingResult 结果
this.validateDTO(result);
这些似乎是一个反复出现的模式,可能有人已经解决了?也许有方面? 我不在乎我所有的方法和控制器都会有 @Valid 登录,他们收到的大多数 DTO 无论如何都是有效的(因为没有应用验证注释)
谢谢
【问题讨论】:
-
你当然可以用方面来做到这一点。但我不确定这是否真的值得麻烦。
-
所以您认为在每个控制器中进行验证是更好的解决方案?想想一个开发者忘记加@Valid注解让我头晕
-
嗯,这就是单元测试的用途......
-
好的,但您仍然没有解决代码冗余问题
-
我不认为这是一个问题。每一层抽象都增加了复杂性,复杂性往往伴随着错误和问题。
标签: java spring validation spring-mvc