2013-10-03 39 views
1

我有以下MVC建立一个Spring 3.2.4应用:春defaultContentType忽略

@Configuration 
public class WebConfig extends WebMvcConfigurationSupport { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/assets/**").addResourceLocations("/assets/"); 
    } 

    @Override 
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { 
     configurer.defaultContentType(MediaType.APPLICATION_JSON); 
     configurer.mediaType("json", MediaType.APPLICATION_JSON); 
     configurer.mediaType("xml", MediaType.APPLICATION_XML); 
    } 

,当我进入我的控制器的URL像/rest/products.json我得到JSON响应,并通过/ REST /产品.xml我按预期得到了XML。

但是,当我访问/休息/产品我得到XML,但我期待JSON,因为我设置为默认内容类型。

这似乎被Spring忽略了。

回答

1

The Spring documentation说:

此内容类型将被使用时,既没有请求路径 延伸,也不是请求参数,也没有接受头可以帮助 确定所请求的内容类型。

所以至少有三种方法可以告诉Spring你试图接收哪种格式。我的猜测是,你仍然在以某种方式告诉Spring你想要用XML获取数据,可能是请求参数,或者更可能是因为它不是可见的 - 在标题中。

尝试检查您的请求的标题。

+0

我从浏览器调用它确实发送了accpet头html和xml,因此导致其余接口返回xml响应而不是json / –