Spring Web应用程序,尝试发送响应为json抛出错误500错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Spring Web应用程序,尝试发送响应为json抛出错误500错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2913字,纯文字阅读大概需要5分钟。
内容图文
我正在Spring框架中开发一个Web应用程序.当请求作为ModelAndView respose类型提供时.它工作得很好但是当我尝试以json的形式提供响应时,它会抛出一个错误
例外
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.codehaus.jackson.map.SerializationConfig.isEnabled(Lorg/codehaus/jackson/map/SerializationConfig$Feature;)Z
org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1259)
根本原因
java.lang.NoSuchMethodError: org.codehaus.jackson.map.SerializationConfig.isEnabled(Lorg/codehaus/jackson/map/SerializationConfig$Feature;)Z
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.writeInternal(MappingJacksonHttpMessageConverter.java:193)
控制器中的方法
@RequestMapping(value="/getFBFriendsList",method=RequestMethod.GET)<br/>
public @ResponseBody List<String> getStatesList(HttpServletRequest req){<br/>
List<String> statesList = null;
try{<br/>
statesList = new ArrayList<String>();<br/>
//..here i am getting states from datebase and adding to list<br/>
}<br/>
catch(Exception e){}<br/>
return statesList;
}
调度程序Servlet中的配置
<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
<property name="supportedMediaTypes" value="application/json" />
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass">
<value>
org.springframework.web.servlet.view.tiles2.TilesView
</value>
</property>
</bean>
我正在使用杰克逊罐子
> jackson-core-asl-1.9.0.jar
> jackson-mapper-asl-1.9.0.jar
> json-lib-0.9.jar
和Spring版本是3.2.4
解决方法:
看起来您至少需要使用Jackson 1.9.2或更高版本.在Jackson 1.9.0和1.9.1的源代码中,已删除org.codehaus.jackson.map.SerializationConfig.isEnabled()的方法定义.这就是您收到NoSuchMethodError异常的原因.
然后在Jackson 1.9.2的源代码中,您会看到以下内容:
/*
/**********************************************************
/* MapperConfig overrides for 1.8 backwards compatibility
/**********************************************************
*/
/* NOTE: these are overloads we MUST have, but that were missing
* from 1.9.0 and 1.9.1. Type erasure can bite in the ass...
*<p>
* NOTE: will remove either these variants, or base class one, in 2.0.
*/
/**
* Alias for {@link MapperConfig#isEnabled(org.codehaus.jackson.map.MapperConfig.ConfigFeature)}.
*
* @since 1.0 However, note that version 1.9.0 and 1.9.1 accidentally missed
* this overloaded variant
*/
public boolean isEnabled(SerializationConfig.Feature f) {
return (_featureFlags & f.getMask()) != 0;
}
简而言之,不要将Jackson版本1.9.0或1.9.1与Spring MVC一起使用,因为Jackson开发人员删除了实际需要的内容.
内容总结
以上是互联网集市为您收集整理的Spring Web应用程序,尝试发送响应为json抛出错误500错误全部内容,希望文章能够帮你解决Spring Web应用程序,尝试发送响应为json抛出错误500错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。