2

JSON メッセージの POST を実行し、Employee オブジェクトに変換したいと考えています。JSON メッセージは {"employee":{"id":2231,"name":"jeffarry2231","niNumber":"SN10KTL"}} .

従業員オブジェクト

public class Employee {
    private Long id;
    private String name;
    private String niNumber;
    ...
}

従業員コントローラー

@Controller
public class EmployeeController {

   @RequestMapping(value = "/employee/add/", method = RequestMethod.POST)
    public void addEmployee(Employee employee){
       System.out.println(employee.getName());
    }
}

リクエストを投稿しているRestTemplateは

@Test
public void postMethod() {
    RestTemplate restTemplate = new RestTemplate();
    String jsonEmployee = "{'id':2231,'name':'jeffarry2231','niNumber':'SN10KTL'}}";

    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(newArrayList(MediaType.APPLICATION_JSON));
    HttpEntity<String> requestEntity = new HttpEntity<String>(jsonEmployee, headers);
    restTemplate.exchange("http://localhost:8080/employee/add/", POST, requestEntity, String.class);
}

applicationContext.xml には

<mvc:annotation-driven/>

MappingJacksonHttpMessageConverter がデフォルトで使用されることを期待していますが、変換されないようです。ここで何が欠けているのかわかりません!

4

1 に答える 1

3

@RequestBody注釈を追加してみてください:

@RequestMapping(value = "/employee/add/", method = RequestMethod.POST)
public void addEmployee(@RequestBody Employee employee){
   System.out.println(employee.getName());
}
于 2012-11-16T02:57:03.383 に答える