看一看源代码中的默认构造器的代码:
注意这个MediaType的值,图中的值是:
application/rss+xml
. 我测试发现Win10 Edge和Chrome都可以解析这种响应内容类型.但Firefox不认识
它会提示你下载. 按F12看到请求允许的内容类型如下: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,
并没有Spring MVC的: application/rss+xml
.在控制器方法的注解中加:produces="application/xml;charset=UTF-8"
也是无济于事,我发现加与不加都一样的结果。
实现AbstractRssFeedView的类在默认构造中重新设置响应的内容类型:
/**
* RSS控制器视图
*
* @author xiaofanku
* @since 20190713
*/
public class TopicRssView extends AbstractRssFeedView{
public TopicRssView(){
setContentType(MediaType.APPLICATION_XML_VALUE);
}
@Override
protected List<Item> buildFeedItems(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
//TODO
}
@Override
protected void buildFeedMetadata(Map<String, Object> model, Channel feed, HttpServletRequest request) {
//TODO
}
}
将RSS的响应内容类型设为: application/xml
. 以下是本人的测试依赖
Spring mvc , Spring framework version: 5.0.7.RELEASE
Rome version: 1.12.0
JDK version: 1.8+
Tomecat version: 8.5.37