2012-02-05 41 views
4

我得到吶以下方法例外:Spring MVC的3例外:一個錯誤/ BindingResult參數預計

@Transactional 
@RequestMapping(method=RequestMethod.PUT) 
public @ResponseBody Account create(@Valid @RequestBody CreateAccountRequest request, BindingResult bindingResult) 
{ ... 
} 

拋出以下異常:

java.lang.IllegalStateException:錯誤/ BindingResult參數 預計會緊接在 控制器方法簽名中的model屬性參數後面:public com.mangofactory.concorde.domain.Account com.mangofactory.concorde.api.Accoun tService.create(com.mangofactory.concorde.api.rpc.CreateAccountRequest,org.springframework.validation.BindingResult)

按照documentation,我需要一個BindingResult添加作爲第二個參數。不過,我已經做到了。

它甚至出現在例外。

我錯過了什麼?

回答

4

打開,要解決這個問題的方法是完全刪除BindingResult財產。

奏效的簽名是:

public @ResponseBody CreateAccountResponse create(@Valid @RequestBody CreateAccountRequest request) 

這是作爲this blog post.

通過補籃點#3
0

我不認爲你需要@RequestBody在那裏,因爲你的CreateAccountRequest類應該已經指定哪些參數綁定到哪個類型/瓦爾(從而否定了需要使用HttpMessageConverters Spring提供)。

3

BindingResult只有後@ModelAttribute論據支持。 @Valid和@RequestBody的組合引起了MethodArgumentNotValidException,默認情況下被轉換成400錯誤代碼。這在參考文檔和@RequestMapping本身中有記錄。

相關問題