我一直在使用Netbeans和Glassfish服务器开发Spring3.0 web应用程序。现在,我应该部署应用程序供公众使用,但是,在尝试从Glassfish迁移到Tomcat时,我遇到了一个错误。我的应用程序使用AJAX从应用程序中的URL获取信息,但是当我请求url时,会得到以下信息:
此请求标识的资源只能根据请求“接受”标头()生成特征不可接受的响应。
我的控制器对它所要求的信息如下所示:
@RequestMapping(value = "/electricity/usage/")
public @ResponseBody List<UsageData> getEUsage(HttpSession session) {
UsageDataDAO UsageDAO = new UsageDataDAO();
User u = (User) session.getAttribute("user");
List<UsageData> l = UsageDAO.getAllUsageData(u.getAccountNum(), 'e');
return l;
}
当我迁移到Tomcat时,为什么会发生这种情况?
发布于 2012-03-23 17:01:20
发生此错误是因为浏览器在“接受”标题中发送给服务器的内容与服务器可以从URL /electricity/usage/返回的内容不匹配。
如果您正在使用像jQuery这样的库(而不执行跨域请求,这一点很重要),那么浏览器将发送以下accept报头:
接受:申请/json
得到该错误意味着服务器不认为URL /electicity/usage可以返回JSON响应。这是在您的webmvc-config.xml文件中配置的。这就是我与JSON请求相关的内容:
<!-- allows rendering responses in XML and JSON formats -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" p:autodetectAnnotations="true"/>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
</list>
</property>
</bean>
关于在Spring:http://rwehner.wordpress.com/2010/06/09/2-ways-to-create-json-response-for-ajax-request-in-spring3/中实现JSON响应,请参阅本教程
为什么这个代码适用于玻璃鱼,而不是Tomcat -这是一个很好的问题.
如果您正在执行跨域请求,则此主题适用于:JQuery's getJSON() not setting Accept header correctly?。
https://stackoverflow.com/questions/9840421
复制相似问题