2016-12-08 4 views
-1

객체 도메인에 FormHttpMessageConverter에 의해 반환되는 변환이 자동으로 기본 MultiValueMap<String, Object> 객체로 변환 등등과 같은 매개 변수로 전달합니다 :는 MultiValueMap 내가 내 스프링 나머지 응용 프로그램에 <code>x-www-formurlencoded</code> 문자열을 게시하고

@RequestMapping(method = RequestMethod.POST, 
     consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, 
     produces = MediaType.APPLICATION_JSON_VALUE) 
@ResponseStatus(HttpStatus.CREATED) 
@ResponseBody 
public User save(@Valid @RequestBody final MultiValueMap<String, Object> 
userMultiValueMap) { 

... 

} 

특정 도메인 객체 (예 : User 객체)가 자동으로 매핑되고 대신 매개 변수로 전달 될 수 있도록 기본 핸들러를 사용자 정의하는 방법은 무엇입니까? 이것은 다음과 일반 application/json 게시물 수 바인딩 자동과 같습니다

@RequestMapping(method = RequestMethod.POST, 
    consumes = MediaType.APPLICATION_JSON_VALUE, 
    produces = MediaType.APPLICATION_JSON_VALUE) 
@ResponseStatus(HttpStatus.CREATED) 
@ResponseBody 
public User save(@Valid @RequestBody final User user) { 

... 

} 

User 개체가 매핑 및 application/json 요청 본문의 게시물에서 생성됩니다. HttpMessageConverter 처리 방법을 x-www-formurlencoded과 유사하게 구현하고 에 기본 처리와 함께 제공되는 MultiValueMap이 아닌 도메인 개체를 가져 오도록 설정하려면 어떻게해야합니까?

답변

-1

변환기에 MappingJackson2HttpMessageConverter를 추가하기 만하면 Spring은 자동으로 원하는 것을 처리 할 수 ​​있습니다.

또한 classpath에 jackson 라이브러리가 있어야하며 사용자는 java bean이어야합니다.

폼 데이터 대신 json을 사용하려면 FormHttpMessageConverter 만 있으면됩니다. 또한 메소드 주석에서 consumes = ... json 부분을 제거하십시오.

+0

그들은 JSON을 원하지 않습니다. 그들은 양식 데이터를 원합니다. –

+0

~ ~ 양식 데이터 편집 – Reek