是否可以在Spring MVC REST端点中validation@RequestParam?

在泽西岛2,可以这样做:

@GET @PATH("user/{email}") public IDto getUser(@NotNull @Email @PathParam("email") String validEmail) { return userManagementService.findUserByEmail(validEmail); } 

但我无法在Spring MVC中创建类似的东西,似乎validation只在提供@RequestBody中的对象或使用SpringMVC表单时完成,例如以下操作无效:

 @RequestMapping(value="/user/{email}", method = RequestMethod.GET) public @ResponseBody IDto getUser(@NotNull @Email @PathVariable String validEmail) { return userManagementService.findUserByEmail(validEmail); } 

还有其他类似的问题,但那些似乎是面向Spring MVC UI应用程序,在我的情况下,它只是一个返回JSON响应的REST API,所以我没有任何View映射/绑定到控制器。

据我所知,你无法与Spring一起开箱即用。

选项:

  1. 使用正则表达式:

     @RequestMapping(value="/user/{email:SOME_REXEXP}", method = RequestMethod.GET) public @ResponseBody IDto getUser(@PathVariable String validEmail) { return userManagementService.findUserByEmail(validEmail); } 
  2. 使用Hibernate Validatorvalidation方法。 手动调用validation器,或者使用AOP让Spring为您调用它。 请参阅https://github.com/gunnarmorling/methodvalidation-integration

似乎有可能,使用@Validated

这是一个例子 。