开发者社区> angel挤一挤> 正文

【spring 注解 错误】使用controller 作为后台给前台ajax交互数据出错

简介: controller作为后台与前台的ajax进行交互,后台的方法处理完成返回一个boolean类型的值,想传给前台用来判断是否执行成功,BUT,问题来了: 1 严重: Servlet.service() for servlet rest threw exception 2 java.
+关注继续查看

controller作为后台与前台的ajax进行交互,后台的方法处理完成返回一个boolean类型的值,想传给前台用来判断是否执行成功,BUT,问题来了:

 1 严重: Servlet.service() for servlet rest threw exception
 2 java.lang.IllegalArgumentException: Unknown return value type [java.lang.Boolean]
 3     at org.springframework.util.Assert.notNull(Assert.java:112)
 4     at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:70)
 5     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126)
 6     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
 7     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
 8     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
 9     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
10     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
11     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
12     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
13     at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
14     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
15     at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
16     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
17     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
18     at com.agen.util.LoginFilter.doFilter(LoginFilter.java:58)
19     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
20     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
21     at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150)
22     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
23     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
24     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
25     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
26     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
27     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
28     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
29     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
30     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
31     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
32     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
33     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
34     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
35     at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
36     at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)
37     at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1778)
38     at java.lang.Thread.run(Unknown Source)
View Code

 

此刻的controller的代码是这样的:

 1 @RequestMapping("/productAdd")
 2     
 3     public boolean productAdd(Product product){
 4         product.setProductId(UUID.randomUUID().toString());
 5         Criteria criteria  = getCurrentSession().createCriteria(Product.class);
 6         criteria.setProjection(Projections.max("productOrder"));
 7         Integer productOrder2 = productService.uniqueResultInt(criteria);
 8         Integer procuctOrder=1;
 9         if(productOrder2 == null){
10             product.setProductOrder(procuctOrder);
11         }else{
12             productOrder2++;
13             product.setProductOrder(productOrder2);
14         }
15         productService.save(product);
16         return true;
17     }
View Code

 

问题:

此刻的controller只能识别返回的true作为字符串,也就是URL去找对应的页面,但是哪里有URL是这样的。

分析问题:

而且我们是想把这个true作为返回值给前台的ajax来判断的,如果为true则插入成功给个提示等等,所以我们不想让这个true作为URL去返回,而是作为JSON格式的数据返回给前台

解决方法

我们需要给这个方法上加一个 spring的注解,让方法返回一个json数据给前台   这个注解就是:@ResponseBody

 1 @RequestMapping("/productAdd")
 2     @ResponseBody
 3     public boolean productAdd(Product product){
 4         product.setProductId(UUID.randomUUID().toString());
 5         Criteria criteria  = getCurrentSession().createCriteria(Product.class);
 6         criteria.setProjection(Projections.max("productOrder"));
 7         Integer productOrder2 = productService.uniqueResultInt(criteria);
 8         Integer procuctOrder=1;
 9         if(productOrder2 == null){
10             product.setProductOrder(procuctOrder);
11         }else{
12             productOrder2++;
13             product.setProductOrder(productOrder2);
14         }
15         productService.save(product);
16         return true;
17     }
View Code

 

如此 就可以将true作为JSON数据返回给前台了

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring的AOP配置以及常见错误(内附代码)
首先我们可以新建一个包,目录结构如下: User类: package com.hqj.aop; public class User {     @Override     public String toString() {         re...
922 0
IPython、Notebook、qtconsole使用教程
IPython、Notebook、qtconsole使用教程 上一篇为Python,IPython,qtconsole,Notebook,Jupyter快速安装教程 1. 使用IPython 自动补全功能,使用tab键,如输入im后按tab键,可自动补全import。 进入IPython,CMD中输入ipython 退出IPython,CMD中输入quit()
3771 0
将jQuery Pagination分页插件用于不使用AJAX加载数据的页面
将jQuery Pagination分页插件用于不使用AJAX加载数据的页面,项目使用SpringMVC,使用Freemarker绑定数据,但分页显示样式不想自己处理,所以使用jQuery Pagination分页插件。
760 0
使用异步事件在后台进行计算并报告进度
演练:实现一个使用后台操作的窗体 Visual Studio 2010     其他版本     此主题尚未评级 - 评价此主题     如果某项操作需要很长的时间才能完成,并且不希望用户界面 (UI) 停止响应或“挂起”,则可以使用 BackgroundWorker 类在另一个线程中执行这种操作。
817 0
ajax请求后台,返回json格式数据,模板!
添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术。将返回的json格式数据,添加到select标签下。           //加载出部门的信息            function loadGroup(){                            $.
996 0
Spring使用外部属性文件以及常见错误(内附大量图片,很有借鉴意义)
一、在 Spring Config 文件中配置 Bean 时,有时候需要在 Bean 的配置里添加 系统部署的细节信息,如文件路径,数据源配置信息。而这些部署细节实际上需要在配置文件外部来定义。
803 0
+关注
angel挤一挤
【任何0基础都能看懂的步骤和解决方法!】
340
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载