2014-06-02 3 views
0

나는 오류 400에 직면하고있어 "1"}오류 400 봄 JSON @RequestBody

내 방법은 같은 것입니다 :

내가 잘못 무엇
@RequestMapping(value = "/catalog/uso/undo/{id}", 
       method = RequestMethod.POST, 
       consumes = MediaType.APPLICATION_JSON_VALUE, 
       produces = MediaType.APPLICATION_JSON_VALUE) 
     public 
     @ResponseBody 
     String undo(@PathVariable("id") int id, 
        @RequestBody Integer qnt) { 
    //some logic here 
} 

, 내가 Intege를 사용하지 못할 것입니다 r "몸"으로? 또는 @RequestBody가 "quantidade"를 찾길 원한다면 어떻게해야합니까? 결과는 내가 annoted의 유형을 변경

+0

요청 본문 내에서 JSON의 값에 액세스 할 수는없는 정수, 그것은 하나의 정수 필드를 가진 객체입니다. 매개 변수를'''quantidade'''라는 단일 정수 필드를 가진 객체로 만드십시오. 내가 객체를 사용하여 시도 400 – Misha

+0

@Misha 나는'JSON을 시도, 정수 매개 변수 이름으로 JSON 필드와 일치하는 시도 @RequestBody annoted 필드가 LinkedHashMap이고 Integer java.lang.ClassCastException에 캐스팅 될 수 없다는 것을 알았습니다 : java.util.LinkedHashMap을 java.lang.Integer'로 형변환 할 수 없습니다. –

+0

@Misha quantidade, 정수 quantidade',하지만 여전히 점점 오류 : QNT, 정수 qnt'과'JSON : 당신이 말한 –

답변

1

나는이 의견에 팁을 해결할 나의 봄 XML에

<mvc:annotation-driven/> 
    <mvc:default-servlet-handler/> 

을 활성화 내 pom.xml 파일에 잭슨 LIB를 한도있다 :

PS 방법에 필드에 해당 만들기 :

@RequestMapping(value = "/catalog/uso/undo/{id}", 
      method = RequestMethod.POST, 
      consumes = MediaType.APPLICATION_JSON_VALUE, 
      produces = MediaType.APPLICATION_JSON_VALUE) 
    public 
    @ResponseBody 
    String undo(@PathVariable("id") int id, 
       @RequestBody LinkedHashMap qnt) { 

지금 나는의 LinkedHashMap오고 있고 내가 좋아하는, 값을 얻기 위해 액세스 할 수 있습니다 :

Object o = qnt.get("qnt"); 

.get("your json object name here");

내가 변환했다, 그래서 내가 정수를 필요로했다

:

int quantidade = Integer.valueOf(String.valueOf(o)); 

가 지금은 변수 quantidade