zoukankan      html  css  js  c++  java
  • [踩坑] SpringMVC拦截器处理ajax请求并返回Msg数据 AND PageHelper使用:使用setList修改返回数据

    SpringMVC拦截器处理ajax请求并返回Msg数据

    由于要配置网站的访问权限,所以在项目中使用SpringMVC的拦截器配置了对需要权限的请求的拦截。

    但是在我的项目的前端中,用写接口是通过Ajax访问服务器获取数据的,因此当没有权限时,拦截器将其请求进行拦截后,不会返回给前端的ajax任何数据(拦截器中的redirect也不会生效);因此,我需要配置这个过滤器处理Ajax的请求。

    解决方法

    //1. 通过request获取请求头,判断请求是否为Ajax(请求为Ajax请求还是普通请求)
    String header = request.getHeader("X-Requested-With");
    
    //2. 如果为Ajax请求的话,设置响应类型,写回数据
    if("XMLHttpRequest".equals(header)) {
        response.setContentType("application/json;charset=UTF-8");
        Writer writer = response.getWriter();
        writer.write("这是一个返回信息");
        response.flushBuffer();
    }
    

    PageHelper使用:使用setList修改返回数据

    今天在使用PageHelper进行分页的过程中,遇到了一个大坑。最开始还可以正常分页,后来睡了一觉,呸...。不知道怎么回事,就不能用了。具体出现的问题是,分页只有一页。。。

    后来查了网友的很多博客的文章,虽然对插件的使用又了解了多了一点:

    1. PageHelper.startPage(0,2);这个语句一定要只会对在其之后的第一个语句进行分页,因此一定要紧紧跟着你要对其进行分页的第一个语句。
    2. PageInfo不一定要写泛型(我真傻,真的)

    在翻了很久的博客,我快要绝望的时候,我意识到是否是因为我修改了分页后的数据,然后才设置到PageInfo中的原因。经过测试后,果然是这样的。所以,这个坑的解决办法就是:如果想要修改分页后的数据(修改属性或者直接换成另一个对象ps(VO)),一定要将分页后的数据设置到PageInfo中之后PageInfo pageInfo = new PageInfo(list)。在使用setList()进行修改。

    List<Book> books = bookService.getAllBooks();
    PageInfo pageInfo = new PageInfo(books);
    
    //对books进行处理,转换成另一个对象list,List<BookVO>;
    
    pageInfo.setList(bookVO);
    
    model.addAttribute("pageInfo",pageInfo);
    //ok
    
  • 相关阅读:
    Running ASP.NET Applications in Debian and Ubuntu using XSP and Mono
    .net extjs 封装
    ext direct spring
    install ubuntu tweak on ubuntu lts 10.04,this software is created by zhouding
    redis cookbook
    aptana eclipse plugin install on sts
    ubuntu open folderpath on terminal
    ubuntu install pae for the 32bit system 4g limited issue
    EXT Designer 正式版延长使用脚本
    用 Vagrant 快速建立開發環境
  • 原文地址:https://www.cnblogs.com/WcxyBlog/p/13870984.html
Copyright © 2011-2022 走看看