2017-03-05 37 views
0

,當我嘗試創建一個對象的實例,並將其存儲到數據庫中,我得到這個錯誤:MissingServletRequestParameterException與PostMapping Spring MVC中

org.springframework.web.bind.MissingServletRequestParameterException 

該方法的代碼:

@PostMapping(path="accounts/add", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) 
public 
@ResponseBody 
String addAccount(@RequestParam String accountNumber, @RequestParam String accountName) { 
    Account account = new Account(); 
    account.setAccountName(accountName); 
    account.setAccountNumber(accountNumber); 
    accountRepository.save(account); 
    return "Saved"; 
} 

當我使用PostMan並嘗試輸入JSON時,它給了我這個信息。我究竟做錯了什麼?

+0

例外表明你沒有提供的參數'accountNumber','accountName',或兩者兼而有之。例外情況是否指定缺少哪一個? – Jeremy

+0

它指定我缺少accountNumber,當我在JSON中指定它時,這是令人難以置信的。 –

+0

因此,它的工作原理是將數據放入數據庫中。但是,它將所有內容都放在一個列中,這不是我想要的。爲什麼會這樣做,我該怎麼做才能解決這個問題? 我其實親自照顧它!感謝您澄清一些事情! –

回答

0

由於您的POST(或PUTing?)JSON作爲內容正文,因此無法使用@RequestParam對其進行解構。這用於查詢或表單參數。您需要指定一個方法參數@RequestBody,該參數類似於以下內容。

public class Account { 
    public String accountNumber; 
    public String accountName; 

    // setters and getters removed for brevity 
} 

更多信息請參閱本答案:@RequestBody and @ResponseBody annotations in Spring