2011-07-05 33 views
1

這是我的我的Spring MVC控制器Spring MVC的POST @RequestBody不綁定到JSON字符串在HTTP請求

@RequestMapping(value="/createNewGame", method=RequestMethod.POST) 
     public ModelAndView createNewGame(@RequestParam(value="phoneNumber") String param,@RequestBody final SampleDTO sampleDTO) { 
     Map model2 = new HashMap(); 
      model2.put("firstname", "Peter"); 
      model2.put("secondname", "Schmitt"); 

      return new ModelAndView("jsonView", model2); 
    } 

的POST方法的簽名,而不是這是SampleDTO類的定義:

public class SampleDTO implements Serializable{ 

    private String value; 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 
} 

我無法執行此方法的請求。我有這樣的錯誤,從客戶端:

org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.supports(Ljava/lang/Class;)Z 

執行與RESTClient實現應用此POST請求與這些參數後:

http://localhost:8080/SpringExample5/createNewGame.json?phoneNumber=6 (POST) 

Content-Type application/json (Header attribute) 

{ "value": "a" }  (Body) 

這也是春天的在我的web應用程序的配置:

<bean name="/gameController.json" 
      class="com.alu.server.games.acquisition.controllers.GameController"/> 


<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> 
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/> 

<bean id="jsonHttpMessageConverter" 
    class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" > 
    <property name="objectMapper"> 
      <ref bean="JacksonObjectMapper" /> 
     </property> 
</bean> 

    <bean 
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
      <ref bean="jsonHttpMessageConverter" />    
     </list> 
    </property> 
</bean> 

<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"> 
    <property name="objectMapper"> 
     <ref bean="JacksonObjectMapper" /> 
    </property> 
</bean> 

<bean id="JacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" /> 

有人可以幫我找到問題嗎? 在此先感謝!

+1

我想你不需要在spring配置中定義jsonHttpMessageConverter,JacksonObjectMapper等。如果傑克遜類存在於類路徑中,則默認添加它們。如果配置正確,則不應調用MappingJacksonHttpMessageConverter的'supports'方法。 – Ritesh

+0

我已經刪除了jsonHttpMessageConverter和JacksonObjectMapper的配置。但是現在我有這個錯誤:服務器拒絕了這個請求,因爲請求實體的格式不被請求的資源所請求的方法支持任何想法? – carlo

+0

從方法中刪除'@RequestParam'後嘗試。我猜@RequestParam和@RequestBody不應該一起使用。 – Ritesh

回答

0

在我使用的設置中,我在Web服務的註釋中指定了媒體類型爲「application/json」,以及json消息轉換器的XML配置。
請查看我的關於here問題的常見問題了解更多詳情。

相關問題