Spring Data REST:自定义方法验证

Yur*_*kov 2 java validation spring spring-mvc spring-data-rest

我正在尝试使用Spring Data REST带有@RepositoryRestResource注释的存储库以及自定义方法实现。有2种情况:

1)我有 REST 存储库注释,@RepositoryRestResource其中映射到/users端点。另外,我有@RestController哪个映射到同一个端点。这导致方法(应该公开)@RepositoryRestResource不可见并在它们上获得 405 结果。然而,带有@Valid注释的方法验证正在处理@RestController方法。例如这有效:

@ResponseBody
@RequestMapping(value = "/users")
public ResponseEntity signUp(@RequestBody @Valid final UserSignUpRequest userSignUpRequest)
Run Code Online (Sandbox Code Playgroud)

2) 与 REST 存储库一起工作的@RepositoryRestController控制器是控制器。这样,在@RepositoryRestController@RepositoryRestResource中声明的两种方法都在工作。但是,方法上的JSR-303@Valid注释停止工作,所以我不能使用@Validannotation。此问题已在DATAREST-593 中描述。

任何想法如何至少解决两个问题中的一个?主要思想是将@RepositoryRestResource存储库与自定义控制器方法和注释验证一起使用。

Séb*_*mer 8

您还可以将其添加到您的 @RepositoryRestController :

@Inject
private LocalValidatorFactoryBean validator;

@InitBinder
protected void initBinder(WebDataBinder binder) {
    binder.addValidators(validator);
}
Run Code Online (Sandbox Code Playgroud)