解决办法:springmvc json类型转换错误

  这篇文章主要介绍了springmvc json类型转换错误解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  在用springmvc做json数据时,返回时,提示类型转换错误(http://nk.xcmnyy.com)

  如下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type : class cn.taotao.bean.Role
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
   org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
   org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
   org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
   org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
   org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
   org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
   org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
   org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
   org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
   org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
   org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
   org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
   org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
   org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
   org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
   org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
   org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
Root Cause
 
java.lang.IllegalArgumentException: No converter found for return value of type : class cn.taotao.bean.Role
   org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:187)
   org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:174)
   org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81)
   org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:113)
   org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)
   org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)
   org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
   org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

  解决办法为(http://www.0834xcjl.com)

  在pom中添加,只要添加上这两个jackson的支持,就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
< dependency >
    < groupId >com.fasterxml.jackson.core</ groupId >
    < artifactId >jackson-core</ artifactId >
    < version >2.8.8</ version >
</ dependency >
  <!-- 返回json字符串的支持 -->
     < dependency >
       < groupId >com.fasterxml.jackson.core</ groupId >
       < artifactId >jackson-databind</ artifactId >
       < version >2.8.8</ version >
     </ dependency >

  在springmvc的controller的方法为,如下(http://3g.0834jlnk.com)

1
2
3
4
5
6
@RequestMapping ( "/getRole/{id}" )
   @ResponseBody
   public Role getRole( @PathVariable ( "id" ) Integer id ) {
     Role roleById = roleService.getRoleById(id);
     return roleById;
   }

  若仍不能解决,可以在springmvc配置文件中进行如下配置(待验证)

1
2
3
4
5
< mvc:annotation-driven >   < mvc:message-converters >     < bean class = "org.springframework.http.converter.StringHttpMessageConverter" />
 
    < bean class = "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
   </ mvc:message-converters >
</ mvc:annotation-driven >

猜你喜欢

转载自www.cnblogs.com/HanaKana/p/12102118.html