在Spring MVC中使用PostMapping的MissingServletRequestParameterException

时间:2017-03-05 06:20:56

标签: java spring spring-boot

当我尝试创建Object的实例并将其存储到数据库中时,我收到此错误:

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时,它会给我这条消息。我做错了什么?

1 个答案:

答案 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