Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring MVC POST@RequestBody don';t绑定到http请求中的JSON字符串_Json_Model View Controller_Spring - Fatal编程技术网

Spring MVC POST@RequestBody don';t绑定到http请求中的JSON字符串

Spring MVC POST@RequestBody don';t绑定到http请求中的JSON字符串,json,model-view-controller,spring,Json,Model View Controller,Spring,这是我的Spring MVC控制器的POST方法的签名 @RequestMapping(value="/createNewGame", method=RequestMethod.POST) public ModelAndView createNewGame(@RequestParam(value="phoneNumber") String param,@RequestBody final SampleDTO sampleDTO) { Map model2 = new

这是我的Spring MVC控制器的POST方法的签名

@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);
     }
这是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应用程序中Spring的配置:

<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" />

有人能帮我找到问题吗?
提前谢谢

在我使用的设置中,我确实在web服务的注释以及json消息转换器的XML配置中指定了媒体类型为“application/json”。

请查看我的FAQ以了解更多详细信息。

我想您不需要在spring配置中定义jsonHttpMessageConverter、JacksonObject Mapper等。如果类路径中存在jackson类,则默认情况下会添加这些类。如果配置正确,则不应调用映射JacksonHttpMessageConverter的“supports”方法。我已删除了jsonHttpMessageConverter和JacksonObject映射器的配置。但现在我遇到了这个错误:服务器拒绝了这个请求,因为请求实体的格式不受请求方法的请求资源的支持。有什么想法吗?请从方法中删除“@RequestParam”后再试。我想@RequestParam和@RequestBody不应该一起使用。如果我离开@RequestParam,也会出现同样的问题。