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

时间:2022-09-24 11:57:03

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

 严重: Servlet.service() for servlet rest threw exception
java.lang.IllegalArgumentException: Unknown return value type [java.lang.Boolean]
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:70)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.agen.util.LoginFilter.doFilter(LoginFilter.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1778)
at java.lang.Thread.run(Unknown Source)

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

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

 @RequestMapping("/productAdd")

     public boolean productAdd(Product product){
product.setProductId(UUID.randomUUID().toString());
Criteria criteria = getCurrentSession().createCriteria(Product.class);
criteria.setProjection(Projections.max("productOrder"));
Integer productOrder2 = productService.uniqueResultInt(criteria);
Integer procuctOrder=1;
if(productOrder2 == null){
product.setProductOrder(procuctOrder);
}else{
productOrder2++;
product.setProductOrder(productOrder2);
}
productService.save(product);
return true;
}

问题:

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

分析问题:

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

解决方法

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

 @RequestMapping("/productAdd")
@ResponseBody
public boolean productAdd(Product product){
product.setProductId(UUID.randomUUID().toString());
Criteria criteria = getCurrentSession().createCriteria(Product.class);
criteria.setProjection(Projections.max("productOrder"));
Integer productOrder2 = productService.uniqueResultInt(criteria);
Integer procuctOrder=1;
if(productOrder2 == null){
product.setProductOrder(procuctOrder);
}else{
productOrder2++;
product.setProductOrder(productOrder2);
}
productService.save(product);
return true;
}

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

【spring 注解 错误】使用controller 作为后台给前台ajax交互数据出错的更多相关文章

  1. Spring 注解@Component,@Service,@Controller,@Repository

    Spring 注解@Component,@Service,@Controller,@RepositorySpring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释, ...

  2. (转载)Spring 注解@Component,@Service,@Controller,@Repository

    Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring ...

  3. 关于Spring注解 @Service @Component @Controller @Repository 用法

    @Component 相当于实例化类的对象,其他三个注解可以理解为@Component的子注解或细化. 在annotaion配置注解中用@Component来表示一个通用注释用于说明一个类是一个spr ...

  4. 前台Ajax发送数据给后台

    前台发ajax请求给后台 前台代码 let data= [{receiveAdd:receiveAddVal, sendAdd:sendAddVal,distance:distance,goodsNa ...

  5. SpringBoot后台接收前台的字符串数据

    需求 将前台传入的字符串数据转为int类型. 操作 在pom.xml中添加引用. <dependency> <groupId>org.apache.commons</gr ...

  6. Spring注解之&commat;Component、&commat;Controller、&commat;Service、&commat;Repository

    目录 1.使用这四个注解的前提 2.详解@Component 3. @Service("XXX")或者@Service(value = "XXX")情况 4.总 ...

  7. SpringBoot系列&colon; 与Spring Rest服务交互数据

    不管是单体应用还是微服务应用, 现在都流行Restful风格,  下图是一个比较典型的使用rest的应用架构, 该应用不仅使用database数据源, 而且用到了一个Weather微服务, 另一方面, ...

  8. Spring注解&commat;Component、&commat;Repository、&commat;Service、&commat;Controller &commat;Resource、&commat;Autowired、&commat;Qualifier、&commat;scope

    以下内容摘自部分网友的,并加上了自己的理解 @Service用于标注业务层组件(我们通常定义的service层就用这个) @Controller用于标注控制层组件(如struts中的action.Sp ...

  9. 转-Spring 注解学习手札(七) 补遗——&commat;ResponseBody,&commat;RequestBody,&commat;PathVariable

    转-http://snowolf.iteye.com/blog/1628861/ Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariab ...

随机推荐

  1. Oracle EBS APIs

    参考链接: http://blog.csdn.net/pan_tian/article/details/7754598 http://blog.itpub.net/26687597/viewspace ...

  2. Oracle Data Provider for &period;NET

    官方地址: http://www.oracle.com/technetwork/topics/dotnet/index-085163.html 终于有正式版了.不用装客户端,又小,确实好.

  3. Android正在使用Handler实现信息发布机制(一)

    上一篇文章,我们谈到了电话Handler的sendMessage方法,最后,我们将进入一个电话 sendMessageAtTime方法,例如下列: public boolean sendMessage ...

  4. 单点登录&lpar;一&rpar;使用Cookie&plus;File实现单点登录

    本文使用Cookies+Filter实现www.taobao.tgb.com 和 www.tianmao.tgb.com的单点登录. 源代码分享:链接: http://pan.baidu.com/s/ ...

  5. WinRAR的自解压模式 - imsoft&period;cnblogs

    一个 SFX (SelF-eXtracting)自解压文件是压缩文件的一种,它结合了可执行文件模块,一种用以运行从压缩文件解压文件的模块.这样的压缩文件不需要外部程序来解压自解压文件的内容,它自己便可 ...

  6. 部署虚拟环境安装Linux系统

      目录                                                              准备工作 安装linux系统 重置root管理员密码 源代码编译 R ...

  7. &lbrack;C&num;学习笔记&rsqb;你真的理解拆箱装箱吗?

    学习一项新知识的时候,最好的方法就是去实践它. 前言 <CLR via C#>这本神书真的是太有意思了!没错我的前言就是这个. 装箱 首先来看下,下面这段代码 可以看到,每次循环迭代都会初 ...

  8. &lbrack;转&rsqb;TortoiseSVN客户端的安装

    TortoiseSVN是windows平台下Subversion的免费开源客户端. 一般我们都是先讲讲服务器的配置,然后再讲客户端的使用,但是在TortoiseSVN上,却可以反过来.因为,如果你的要 ...

  9. &lbrack;LeetCode&rsqb; 29&period; Divide Two Integers &star;&star;

    Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...

  10. 20154327 Exp5 MSF基础应用

    基础问题回答 用自己的话解释什么是exploit,payload,encode. exploit漏洞利用,一般出现漏洞后,根据一些大佬们给出的POC尝试去进行漏洞利用. payload攻击负载,是我们 ...