首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:Spring3.0.3mvc Portlet+JSON的‘ContentNegotiatingViewResolver’

错误:Spring3.0.3mvc Portlet+JSON的‘ContentNegotiatingViewResolver’
EN

Stack Overflow用户
提问于 2010-07-06 13:53:15
回答 2查看 2.2K关注 0票数 2

我想用支持JSON的DispatcherPortlet类制作spring MVC3.0.3 portlet。因此,我在spring上下文文件中添加了以下配置。

代码语言:javascript
复制
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
代码语言:javascript
复制
                                text/html                                                                                     

如果没有这一点,如果我只使用'InternalResourceViewResolver‘,那么它运行得很好,并且我能够使用这个portlet。但是在定义了这个bean之后,我在tomcat启动时得到了以下错误。

我用谷歌搜索了一下,发现了一个链接,说明这个带有JSON的bean只能在最新的spring版本中与servlet一起工作。请同时检查链接。

http://jira.springframework.org/browse/SPR-7344 (portlets的JSON问题...)

http://jira.springframework.org/browse/SPR-6932?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel#issue-tabs

另外,请检查下面粘贴的错误。帮帮我..。谢谢。

:错误:

java.lang.IllegalArgumentException: Object of class [org.springframework.web.portlet.context.PortletRequestAttributes] must be an instance of class org.springframework.web.context.request.ServletRequestAttributes

请检查日志

代码语言:javascript
复制
 Caused by: java.lang.IllegalArgumentException: Object of class [org.springframework.web.portlet.context.PortletRequestAttributes] must be an instance of class org.springframework.web.context.request.ServletRequestAttributes
 at org.springframework.util.Assert.isInstanceOf(Assert.java:337)
 at org.springframework.util.Assert.isInstanceOf(Assert.java:319)
 at org.springframework.web.servlet.view.ContentNegotiatingViewResolver.resolveViewName(ContentNegotiatingViewResolver.java:363)
 at org.springframework.web.portlet.DispatcherPortlet.resolveViewName(DispatcherPortlet.java:1110)
 at org.springframework.web.portlet.DispatcherPortlet.render(DispatcherPortlet.java:1052)
 at org.springframework.web.portlet.DispatcherPortlet.doRenderService(DispatcherPortlet.java:761)
 at org.springframework.web.portlet.FrameworkPortlet.processRequest(FrameworkPortlet.java:522)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-06 15:31:52

ContentNegotiatingViewResolver不能与portlets一起工作,只能与servlets一起工作。

一般来说,Spring中的许多servlet API类都有一个等效的portlet,例如

  • org.springframework.web.servlet.HandlerAdapter
  • org.springframework.web.portlet.HandlerAdapter

您必须确保使用正确的APIs servlet和portlet API完全不兼容。

但是,从Spring 2.5开始,portlet框架就被忽略了(可能是因为它很少使用),并且portlet MVC API中没有包含servlet MVC API的较新部分。

看起来,如果你想做你想做的事情,你将不得不自己做很多事情。您也许能够从ContentNegotiatingViewResolver和相关类中复制一些代码。

票数 2
EN

Stack Overflow用户

发布于 2011-05-31 00:56:33

看看这个。它现在应该可以工作了

代码语言:javascript
复制
<!-- View Resolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/test/testJSp/" />
    <property name="suffix" value=".jsp" />
      <property name="order" value="2" />
</bean>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3183805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档