Spring MVC POST@RequestBody don';t绑定到http请求中的JSON字符串
这是我的Spring MVC控制器的POST方法的签名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
@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,也会出现同样的问题。