【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数据返回给前台了

 

相关文章
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
336 2
|
10月前
|
Web App开发 数据采集 前端开发
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
328 3
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
321 1
|
XML 存储 前端开发
后端程序员的前后端交互核心-Ajax
后端程序员的前后端交互核心-Ajax
184 6
后端程序员的前后端交互核心-Ajax
|
前端开发 API 开发者
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
188 3
|
JSON 前端开发 数据格式
layui 穿梭框transfer组件 数据data用ajax来获取
layui 穿梭框transfer组件 数据data用ajax来获取
586 2
|
前端开发 JavaScript Java
Ajax进行异步交互:提升Java Web应用的用户体验
Ajax 技术允许在不重载整个页面的情况下与服务器异步交换数据,通过局部更新页面内容,极大提升了 Java Web 应用的响应速度和用户体验。本文介绍 Ajax 的基本原理及其实现方式,包括使用 XMLHttpRequest 对象发送请求、处理响应数据,并在 Java Web 应用中集成 Ajax。此外,还探讨了 Ajax 如何通过减少页面刷新、实时数据更新等功能改善用户体验。
256 3
|
Web App开发 前端开发 JavaScript
Python编程—Ajax数据爬取(一)
Python编程—Ajax数据爬取(一)
268 0