将 Spring MVC应用程序升级到Spring 3.2之后,当访问我的一些URL时,我收到以下异常:
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
    at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:203) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:272) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:212) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:55) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:297) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.getHandler(dispatcherServlet.java:1091) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.getHandler(dispatcherServlet.java:1076) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:896) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:856) ~[spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915) [spring-webmvc-3.2.0.RELEASE.jar:3.2.0.RELEASE]
(...)

此异常导致HTTP 406不可接受.

我设法创建一个简单的控制器与一个URL我无法访问:

@RequestMapping(value = "/resources/foo.js",produces = "text/javascript")
@ResponseBody
public String foo() throws Exception {
    return "";
}

当我在Accept-header中使用一个具有* / *的普通浏览器时,我不明白为什么我应该得到一个HTTP 406.这甚至更奇怪的是这个代码正在使用Spring 3.1.2,但不适用于Spring 3.2.这是为什么?

解决方法

已经有了与 Spring does content-negotiations in 3.2有关的几个更改.其中一个更改是现在可以根据URL中的文件后缀完成内容协商.默认情况下启用此功能.在3.2之前的Spring版本中,HTTP accept-header用于内容协商.当浏览器访问您的URL内容时,协商很少出现问题,因为浏览器总是发送Accept:(…)* / *.

Spring有一个后缀地图=>媒体类型.对于“.js”,默认媒体类型为“application / x-javascript”.当Spring尝试查找请求到/resources/foo.js的处理程序映射时,它将不匹配您的foo() – 方法,因为它产生错误的介质类型.

我不知道Spring团队是否想过这个案子.至少有一点奇怪,它允许您创建一个不能被访问的@RequestMapping(由于.js-media类型和在生产字段中设置的不兼容).

有几种方法来解决这个问题.一个是将生成参数更改为“application / x-javascript”.另一个是将“.js”的媒体类型更改为“text / javascript”(see the docs of how to do that).第三种可能性是关闭基于后缀的内容谈判(再次,see the docs of how to do it).

java – HttpMediaTypeNotAcceptableException升级到Spring 3.2后的更多相关文章

  1. ios – 来自UIAlertController的self.navigationController?.popViewControllerAnimated

    我是新手,但我想我已经掌握了它.这让我的进步很难过.我想要做的是当我们无法找到他的查询的相关数据时向用户抛出错误消息,然后继续将他带回到之前的ViewController.但是,我在这方面遇到了麻烦.在我添加操作的行上,我收到以下错误:’UIViewController?’不是Void的子类型我该怎么做呢?

  2. ios – Swift闭包为AnyObject

    如何将()–>()转换为AnyObject?我试图将它转换为:处理程序为AnyObject,但它给我一个错误说:()–>()不符合协议’AnyObject’解决方法HowcanIcast()->()intoAnyObject?

  3. Twilio电话在iOS和Android中无法正常工作

    我正在尝试使用twilioclient在反应本机应用程序.这里是链接Twiliorepo完成所有设置与反应本机twilio.当我打电话一个数字得到问题.我使用了这个链接中的所有步骤.[tid:com.facebook.react.JavaScript]处理程序不是一个函数.(在“处理程序(rtn)”中,’handler’是未定义的)2016-09-2711:00:57.857[致命][tid:co

  4. iOS Parse Stripe Integration

    所有指南和文档都指向了这个方向.我真的不明白GET/POST是什么以及它如何适合iOSObjective-C编程.关于如何设置它的任何指导都将非常感激.我已经坚持了一段时间了.解决方法Parse的条带API并不像它应该的那样完整.它本身不包含许多功能,但可以通过HTTP请求完成.我必须学习一点Javascript和HTTP请求以获得许多功能.当然,你的第一直觉应该告诉你不要在任何设备上存储CC号码!

  5. [Swift]UIKit学习之警告框:UIAlertController和UIAlertView

    Important:UIAlertViewisdeprecatediniOS8.(NotethatUIAlertViewDelegateisalsodeprecated.)TocreateandmanagealertsiniOS8andlater,insteaduseUIAlertControllerwithapreferredStyleofUIAlertControllerStyleAlert.

  6. Swift基础之对话框UIAlertController

    varalertController=UIAlertController(title:"标题",message:"这是一个UIAlertController的默认样式",preferredStyle:UIAlertControllerStyle.Alert)varcancelAction=UIAlertAction(title:"取消",style:UIAlertActionStyle.Cance

  7. Swift下弹出对话框

  8. UIAlertController 测试的修正

    作者:dom,原文链接,原文日期:2015-11-25译者:小袋子;校对:lfb_CD;定稿:千叶知风两个月前,我曾发布了一篇如何测试UIAlertController的文章。一个读者发现测试没有如期地起作用:@dasdom你的测试是正常的,但是在MockUIAction中的简便init方法没有被调用。那是因为handler确实被调用了,看起来就像UIAlertAction真的把handler作为内部变量去存储动作的handler闭包。这是非常脆弱的,并且Larhythimx在另一个tweet指出在他的测

  9. Swift2.0-异常处理Exception handler

    Swift2.0-异常处理前言关于我们为什么要使用异常处理,请看百度百科为我们作出的描述,想要更详细的资料请点这里以上摘自百度百科:关联,在Objective-C中,异常处理一般都是使用NSError类接收异常和抛出异常,使用方法像这样不得不说,Swift的异常处理更为优雅,下面会重点介绍。去执行该函数不建议使用try!

  10. Swift面向协议编程简介

    Swift面向协议编程简介协议是Swift编程语言中一个非常强大的特性。Swift在编译时检查协议一致性问题,使得开发者可以在运行程序前发现代码中的一些致命错误。Swfit通过提供一些最常见奇怪问题的解决方案以及许多其他编程语言的接口限制,进一步获得了使用协议的便利性。Swift标准库扩展除了扩展自己的协议,还可以扩展来自Swift标准库的协议。

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部