2013-10-02 51 views
0

我與東西應該工作,但沒有掙扎......JSON請求的控制器不分析正確

我有這個映射在我的控制器:

@RequestMapping(value = "/keys", method = RequestMethod.POST) 
@Consumes(MediaType.APPLICATION_JSON) 
public ResponseEntity<Void> parseKeyList(keyList keyList) { 
    return new ResponseEntity<Void>(HttpStatus.OK); 
} 

與簡單的類

@XmlRootElement 
public class keyList { 
    private String keys; 
    public String getKeys() { 
    return keys; 
    } 

    public void setKeys(String keys) { 
    this.keys = keys; 
    } 
} 

而且我送這個簡單的JSON職位:

{"keys": "This is my key list"} 

但我得到nullkeys

按照要求原調度員的servlet:

<context:component-scan base-package="com.api" /> 
    <!-- <mvc:resources mapping="/*" location="/WEB-INF/pages/" /> --> 
    <bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/WEB-INF/pages/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 
+1

get/set方法可能需要命名爲'getKeys/setKeys' –

+0

nop。不起作用,仍爲空讓我編輯 – Gleeb

回答

1

您沒有連接您的密鑰列表參數去請求主體,改變方法:

@RequestMapping(value = "/keys", method = RequestMethod.POST) 
@Consumes(MediaType.APPLICATION_JSON) 
public ResponseEntity<Void> parseKeyList(@RequestBody keyList keyList) { 
    return new ResponseEntity<Void>(HttpStatus.OK); 
} 

順便說一句。 :類keyList應該是KeyList(與大K)。

也有(看chat)一

<mvc:annotation-driven/> 

從您的調度員servlet.xml中失蹤。那是註冊傑克遜映射器/編組器的人。

+0

獲得415不支持的媒體類型 – Gleeb

+0

您可以刪除@Consumes註釋並重試嗎? –

+0

仍然一樣。 – Gleeb