1

我有以下幾點:Bean驗證對象轉換成RequestParam @RequestBody

@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE) 
public ResponseEntity<LoginResponse> getLoginStatus(@Valid LoginRequest loginRequest){ 
     //some stuff here 
} 

loginRequest paramater是@RequestParam,但是,因爲它是一個自定義對象時,@RequestParam註釋的對象的前面不需要。問題是,當任何bean驗證註釋放在自定義對象的前面時,該對象將轉換爲一個主體參數(@RequestBody),但我們希望驗證該對象是請求參數,而不是主體參數。

任何人都可以幫助我嗎?

+0

你已經看過Spring中的@Validated註解嗎? [這裏](https://sdqali.in/blog/2015/12/04/validating-requestparams-and-pathvariables-in-spring-mvc/)就是一個例子。 – Rlarroque

+0

它是一個自定義對象的事實與您有(或不)添加'@ RequestParam'註釋的事實無關。現在發生的事情是,spring會創建一個類的實例並進行一些綁定(大部分與@ ModelAttribute相同)。如果您使用'@ RequestParam',它會嘗試將請求參數轉換爲給定的使用'Converter'或自定義'HandlerMethodArgumentResolver'的'LoginRequest'對象。基本上你對發生的事情的理解是關閉的。 –

+0

我不明白。 Juste使用Valid @ModelAttribute LoginForm loginForm – amdev

回答

0

爲什麼LoginRequest屬性成爲RequestBody的一部分,而不是RequestParameters了究其原因,是由於2.6.1版本springfox-swagger。升級到版本2.7.0爲我們解決了這個問題。