Spring 3.2内容协商类强制转换异常

2024-02-22

我们使用 Spring MVC 开发一个标准的 Java Web 应用程序,最近尝试从 3.0.6 升级到 3.2.0。我们几乎所有的 servlet 响应都是 JSP 或 Json 视图,但也有一些是 pdf 请求,扩展名为“pdf”。

春季3.0.6 我们进行了这样的设置,取自 Spring MVC 文档。

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
  <entry key="pdf" value="application/pdf"/>
  <entry key="html" value="text/html"/>
  <entry key="json" value="application/json"/>
</map>

与 XMLViewResolver 结合使用效果很好。

更新到3.2.0后,出现故障:

Error creating bean with name' org.springframework.web.servlet.view.ContentNegotiatingViewResolver#0' defined in class path  resource [dispatcher-test-servlet.xml]: Invocation of init method failed; nested exception is 

java.lang.ClassCastException: java.lang.String cannot be cast to                   org.springframework.http.MediaType'

在研究了文档和一些博客之后,此配置似乎有效:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
   <property name="contentNegotiationManager">
<bean class="org.springframework.web.accept.ContentNegotiationManager">
<constructor-arg>
    <list>
    <!-- These are evaluated in order -->
    <!-- Is there a media type based on suffix? -->
<bean                  class="org.springframework.web.accept.PathExtensionContentNegotiationStrategy">
<constructor-arg>
    <map>
<entry key="html" value="text/html" />
<entry key="json" value="application/json" />
<entry key="pdf" value="application/pdf" />
</map>
</constructor-arg>
</bean>
<!-- Else use request header -->
<bean
            class="org.springframework.web.accept.HeaderContentNegotiationStrategy">

</bean>
</list>
</constructor-arg>
</bean>
</property>

但是,我们尝试使用此配置运行新的 Spring MVC 测试框架,并再次收到 ClassCast 异常,因此测试框架似乎没有以与应用程序运行时相同的方式初始化 bean... 有谁对如何在 Spring 3,2 中以稳健的方式配置 ContentNegotiatingViewResolver 有清晰的解释吗? 谢谢

Richard


我通过删除重复的内容解决了这个问题<mvc:annotation-driven/>来自 xml 配置 或者@EnableWebMVC来自类的注释 因为 spring 文档警告了这一点,并且合同只允许一次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 3.2内容协商类强制转换异常 的相关文章

随机推荐

  • Tweepy OpenSSL.SSL.WantReadError

    Python 3 6 我使用 tweepy 的 Streamer 来获取推文 效果很好 但有时 如果我让它打开超过 24 小时 就会出现此错误 Traceback most recent call last File C ProgramDa
  • C++ 中的 bool 是什么?

    我遇到了一些非常有趣的代码 这让我想知道 bool 是什么 我一直认为它是原始类型 例如 int char 或 long 但今天 我看到了这样的东西 void boolPtrTest bool thisBool true boolPtrHe
  • sas中的分组依据

    我有以下数据集作为输入 ID 1 2 2 3 4 4 4 5 并需要一个新的数据集 如下所示 ID count of ID 1 1 2 2 3 1 4 3 5 1 您能告诉我如何在 SAS 中执行此操作而不使用 PROC SQL 吗 或者
  • 为我的 WCF 服务启用 SSL

    我有一个在开发中使用 basicHttpBinding 的 WCF 服务 现在在产品中我们想要使用 SSL 我必须进行哪些更改才能强制仅使用 SSL 连接 MSDN 上的此页面解释了 WCF 绑定安全性 http msdn microsof
  • 定义API时我应该返回CompletableFuture还是Future?

    在Java 8中 接口或抽象类定义返回的API更好吗 CompletableFuture而不是返回Future 考虑到转换很难看Future to CompletableFuture https stackoverflow com ques
  • 向 pandas 绘图添加小刻度

    我有以下代码 from pandas datareader import data as web import matplotlib pyplot as plt fig ax1 ax2 plt subplots 2 1 df web Dat
  • 如果互联网或信号中断,如何捕获异常

    我正在使用媒体播放器和流音频 我想知道如果互联网或信号中断并且无法再传输音频 捕获异常的最佳方法是什么 下面是我到目前为止所做的代码 正如您所看到的 我用相同的消息抛出所有异常 private class taskDoSomething e
  • Parse.com Javascript SDK 使用 include,但不起作用

    我正在尝试从名为的表中获取数据Book 里面Book有一个Pointer
  • 在网络调用期间显示 ProgressDialog,直到完成

    I am very很沮丧 因为我一直在等待网络调用时尝试实现一个超级简单的加载轮 我已经搜索并阅读了几十个这样的问题 我只是觉得我一定错过了一些东西 除非没有人真正做我想做的事情 我尝试过AsyncTask路线 但这不是我想要的 我还要说的
  • axios 在本机反应中给出 [AxiosError: Network Error]

    我是 React Native 的新手 我正在尝试使用 React Native 中的 axios 提交 api 但我 getiign AxiosError 网络错误 我不知道这是什么或如何解决这个问题 function getdata c
  • mysqli_real_escape_string 如何无法阻止 SQL 注入? [复制]

    这个问题在这里已经有答案了 首先 我知道人们想要使用存储过程 以便他们重用查询并处理转义 然而 我读到很多开发人员都说mysqli real escape string不能100 防止SQL注入 有人可以提供一个例子吗 根据我对这个主题的有
  • javascript中字符串的数组未移位

    var hello hello Array prototype unshift call hello 11 gives error Array prototype join call hello works why 有人可以向我解释为什么吗
  • 向量-向量相乘来创建矩阵

    我是一个 IDL 用户 慢慢切换到 numpy scipy 有一个操作我在 IDL 中非常频繁地执行 但无法用 numpy 重现 IDL gt a 2 4 IDL gt b 3 5 IDL gt print a b 6 00000 12 0
  • TCP 客户端异步套接字回调

    请注意 问题是关于仅在套接字上使用异步回调模式 我想构建一个 TCP 客户端 当收到数据包以及套接字关闭时 它会通知我 因为 NET 提供的 beginRecv endRecv 功能不会通知连接是否仍然可用 我的问题 没有一种方法可以像使用
  • Spring 控制器:我可以在调用每个 @RequestMapping 方法之前调用一个方法吗?

    我有一些通用组件 它们始终存在于给定控制器类提供的每个页面中 在每个 RequestMapping 方法的开头 我使用这些通用组件填充模型 有没有一种方法可以定义在每个控制器方法之前调用的方法 以便我可以将所有这些复制 粘贴到一个地方 只需
  • Laravel 4.2:将数据库记录从一个数据库复制到另一个数据库

    我需要在 Laravel 4 2 中将记录子集从一个数据库复制到另一个数据库 我编写了一个 artisan 任务 加载需要从 默认 数据库连接复制的模型 现在需要将它们保存到第二个数据库连接 在 config database php 中定
  • Android - 顶部的操作栏和页面底部的选项卡

    我是一名 Android 开发新手 我刚刚开始学习Android编程 我想知道是否可以在页面顶部添加带有操作图标的操作栏 在页面底部添加选项卡 如果是这样 请有人指导我如何实现它的代码 提前致谢 乌迪 AFAIK 您可以在底部添加操作按钮
  • 屏幕旋转导致 Android 应用程序崩溃 [重复]

    这个问题在这里已经有答案了 我是安卓开发新手 我开发了一个应用程序 现在的问题是 每当我旋转屏幕时 应用程序都会再次启动活动 然后应用程序崩溃 我在谷歌上找到了一些解决方案可以使用android configChanges 方向 它工作正常
  • 如何在 Laravel 5.1 中使用 NOT FIND_IN_SET?

    当我们使用 FIND IN SET 在 Laravel 中搜索逗号分隔值时 如下所示 gt whereRaw FIND IN SET 2 sent mail ids 但现在我想得到那些不存在于逗号分隔值中的结果 为此 我们在 MySQL 中
  • Spring 3.2内容协商类强制转换异常

    我们使用 Spring MVC 开发一个标准的 Java Web 应用程序 最近尝试从 3 0 6 升级到 3 2 0 我们几乎所有的 servlet 响应都是 JSP 或 Json 视图 但也有一些是 pdf 请求 扩展名为 pdf 春季