Spring Rest JSON绑定

Sri*_*Sri 4 java rest spring json jackson

我正在尝试用Spring创建Restful服务.

方法通过参数接受"UserContext"对象,即@RequestBody.

客户端使用内容类型"application/json"发送JSON对象.但我收到错误"HTTP/1.1 415不支持的媒体类型".

..甚至当客户端发送一个空的"{}"JSON对象时.

我的控制器:

@Controller
@RequestMapping(value = "/entityService")
class RestfulEntityService {

  @Resource
  private EntityService entityService;

  @ResponseBody
  @RequestMapping(value = "/getListOfEntities", method = RequestMethod.POST)
  public List<Entity> getListOfEntities(@RequestBody UserContext userContext) {
    System.out.println(userContext);
    return null;
  }
}
Run Code Online (Sandbox Code Playgroud)

UserContext.java

public class UserContext {

    private Long userId;

    private String userName;

    private UserAddress userAddress;

    private CustomerInfo customerInfo;

}
Run Code Online (Sandbox Code Playgroud)

应用背景:

  <bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller"/>
  <bean id="xmlMessageConverter"
        class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
    <constructor-arg ref="xstreamMarshaller"/>
    <property name="supportedMediaTypes" value="application/xml"/>
  </bean>

  <bean id="jsonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="supportedMediaTypes" value="application/json"/>
  </bean>

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

  <mvc:annotation-driven/>
Run Code Online (Sandbox Code Playgroud)

苦苦挣扎了一会儿.帮助将不胜感激!

Bij*_*men 7

根据我在mvc-showcase上看到的messageconverter示例,尝试Accept在您的请求中使用标题application/json

这是一个相关的问题:使用spring mvc3 @ResponseBody有415个不支持的媒体类型为什么?