Restful Spring postForObject缺少所有属性值

时间:2015-11-05 09:42:42

标签: java spring spring-mvc resttemplate

我尝试模拟restful服务器:

 @RequestMapping(value = "/issuer/addIssuer", method = RequestMethod.POST)
    @ResponseBody
    public Issuer addIssuer(@ModelAttribute("issuer") Issuer issuer) {

        if (issuer != null) {
            logger.info("Inside addIssuer, adding: " + issuer.toString());
        } else {
            logger.info("Inside addIssuer...");
        }
        issuers.put(issuer.getTicker(), issuer);
        return issuer;

    }

控制器代码:

FORFILES

我填写了一些属性,但是当我调试服务器时,所有值都为空。

INFO:com.avaldes.tutorial.RestController - 在addIssuer内部,添加:[null,null,null,null]

IssuerName和country也是null .. 我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

您在控制器中使用@ModelAttribute。在这种情况下,您需要将数据发送为application/x-www-form-urlencoded

MultiValueMap<String, Object> variables = new LinkedMultiValueMap<>();
variables.add("country", "Teacher 1");
variables.add("issuerName", "Department 1");

RestTemplate restTemplate = new RestTemplate();

HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(variables, requestHeaders);

String url = txtHost.getText()+txtGet.getText();
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, Issuer.class);