需求:请求list.json返回以下数据

  1. {
  2. "jsonResult": {
  3. "code": 200,
  4. "message": "查询成功",
  5. "nextUrl": null,
  6. "data": [
  7. {
  8. "pageNo": 0,
  9. "id": 1,
  10. "type": "personal",
  11. "avatarUrl": null,
  12. "source": null,
  13. "loginName": "test",
  14. "name": "测试人员",
  15. "certStatus": 0,
  16. "idNum": null,
  17. "password": "567",
  18. "jobId": "smartTravel",
  19. "cellphone": null,
  20. "cellphoneActived": false,
  21. "email": null,
  22. "emailActived": false,
  23. "projectName": "测试项目111",
  24. "balance": 0,
  25. "paymentCode": null,
  26. "provinceId": "beijing",
  27. "cityId": "xichengqu",
  28. "address": "北京市西直门大街3321-1号werer",
  29. "enabled": true,
  30. "createTime": [
  31. 2019,
  32. 9,
  33. 25,
  34. 14,
  35. 11,
  36. 38
  37. ]
  38. }
  39. ]
  40. }
  41. }

Controller里面有两个方法

  1. @PostMapping(value = "list")
  2. public String list(Model model, String name, Integer certStatus,
  3. @RequestParam(required = false) LocalDate startDate,
  4. @RequestParam(required = false) LocalDate endDate,
  5. Integer pageNo,Integer pageSize) {
  6.  
  7. HashMap<String,Object> map = new HashMap<>();
  8. map.put("name",name);
  9. map.put("certStatus",certStatus);
  10. map.put("startDate",startDate);
  11. map.put("endDate",endDate);
  12.  
  13. Page<ApiUser> list = userService.queryPage(map, pageNo,pageSize);
  14. model.addAttribute("list", list);
  15.  
  16. return "user2/list";
  17. }
  18.  
  19. @GetMapping(value = "list.json")
  20. public JsonResult list(String name, Integer certStatus,
  21. @RequestParam(required = false) LocalDate startDate,
  22. @RequestParam(required = false) LocalDate endDate,
  23. Integer pageNo,Integer pageSize) {
  24.  
  25. HashMap<String,Object> map = new HashMap<>();
  26. map.put("name",name);
  27. map.put("certStatus",certStatus);
  28. map.put("startDate",startDate);
  29. map.put("endDate",endDate);
  30.  
  31. Page<ApiUser> list = userService.queryPage(map, pageNo,pageSize);
  32.  
  33. return successResult("查询成功",list);
  34. }

调试的时候每次都进入list.json方法,实际返回结果却是网页代码。也就是返回list方法对应的视图。

只要进行如下配置就好:

  1. /**
  2. * 配置多视图解析器
  3. *
  4. * @param manager manager 会自动构建,configureContentNegotiation可以进行配置
  5. * @param viewResolvers 当前项目的 viewResolver, (此时会包含上面配置的 freemarkerViewResolver)
  6. * @return ContentNegotiatingViewResolver
  7. * @see WebMvcConfigurerAdapter#configureContentNegotiation(org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer)
  8. */
  9. @Bean
  10. public ContentNegotiatingViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager, List<ViewResolver> viewResolvers) {
  11.  
  12. ContentNegotiatingViewResolver viewResolver = new ContentNegotiatingViewResolver();
  13. viewResolver.setContentNegotiationManager(manager);
  14.  
  15. // 设置默认view, default view 每次都会添加到 真正可用的视图列表中, json视图没有对应的ViewResolver
  16. View jackson2JsonView = new MappingJackson2JsonView();
  17. viewResolver.setDefaultViews(Collections.singletonList(jackson2JsonView));
  18.  
  19. Map<String, MediaType> mapping = Collections.singletonMap("json", MediaType.valueOf("application/json;charset=UTF-8")); //实测需要加上这个,否则之前通过实体属性序列化成json,返回json的方法容易出错。
  20.  
  21. MappingMediaTypeFileExtensionResolver extensionsResolver = new MappingMediaTypeFileExtensionResolver(mapping);
  22.  
  23. manager.addFileExtensionResolvers(extensionsResolver);
  24.  
  25. viewResolver.setViewResolvers(viewResolvers);
  26. return viewResolver;
  27. }

转载自:https://segmentfault.com/a/1190000015721806

类似文章:请求路径@PathVariable注释中有点.英文句号的问题(忽略英文句号后面的后缀)

  1. https://www.programcreek.com/java-api-examples/?class=org.springframework.web.accept.ContentNegotiationManager&method=addFileExtensionResolvers

springboot拦截json后缀的请求,返回json数据的更多相关文章

  1. shiro异步请求返回JSON响应

    shiro异步请求返回JSON响应 需求1:当shiro请求资源,但是没有进行认证时,默认是进行重定向,现在需要返回JSON响应.注意异步请求,服务器重定向后,ajax拿到的是浏览器重定向后的到的页面 ...

  2. springmvc通过ajax异步请求返回json格式数据

    jsp 首先创建index.jsp页面 <script type="text/javascript"> $(function () { $("#usernam ...

  3. 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法

    在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ...

  4. AJAX请求,返回json进行页面绑值

    AJAX请求,返回json进行页面绑值 后台 controller @RequestMapping(value = "backjson.do",method=RequestMeth ...

  5. SpringBoot 拦截器获取http请求参数

    SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 目录 SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 获取http请求参数是一种刚需 定义拦截器获取请求 为 ...

  6. spring 4.x下让http请求返回json串

    当前很多应用已经开始将响应返回为json串,所以基于springframework框架开发的服务端程序,让响应返回json字符串成为了一种常用手段. 这里介绍一下如何在spring-MVC框架下方便快 ...

  7. ajax请求返回json字符串/json对象 处理

    1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...

  8. 使用jQuery发送POST,Ajax请求返回JSON格式数据

    问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...

  9. 学习网络请求返回json对应的model

    原来泛型可以这样用: 网络返回基类,返回一个code,msg,body,其中body不确定,所以,我们把它写成泛型 import org.json.JSONObject; /** * 网络请求的基类 ...

随机推荐

  1. 《hello--world团队》第五次作业:项目需求分析改进与系统设计

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验九 团队作业5-团队项目需求改进与系统设计 团队名称 <hello--worl ...

  2. AJAX学习笔记——JSON

    JSON基本概念 1.JSON : JavaScript对象表示法( JavaScript Object Notation ) 2.JSON是存储和交换文本信息的语法,类似XML.它采用键值对的方式来 ...

  3. java中为什么不能通过getClass().getName()获取父类的类名

    例如: class A{} public class B extends A{ public void test(){ System.out.println(super.getClass().getN ...

  4. AOP(execution表达式)

    作者:门罗的魔术师 推荐:y-yg 在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点" 例如定义切入点表达式  ex ...

  5. BZOJ2155(?) R集合 (卡特兰数)

    Orz Freopen大佬 CODE fac = [0]*1005 def C(n, m): return fac[n] // fac[m] // fac[n-m] n = int(input()) ...

  6. Copy Books II

    Description Given n books and each book has the same number of pages. There are k persons to copy th ...

  7. Python3 报错'latin-1' codec can't encode character 解决方案

    Python3 报错'latin-1' codec can't encode character 解决方案 在更新数据库操作时,报错: UnicodeEncodeError: 'latin-1' co ...

  8. svn优点跟缺点?

    优点: 1.svn优点:集中式管理,管理方式在服务端配置好,客户端只需要同步提交即可,使用方便,操作简单,很容易就可以上手 2.在服务端统一控制好访问权限,利用代码的安全管理. 3.所有的代码以服务端 ...

  9. springboot整合springsecurity遇到的问题

    在整合springsecurity时遇到好几个问题,自动配置登录,下线,注销用户的操作,数据基于mybatis,模版引擎用的thymeleaf+bootstrap. 一.认证时密码的加密(passwo ...

  10. mysql 的编写顺序和执行顺序

    编写顺序 S..F..W..G..H..O 执行顺序 F..W..G..H..S..O from →join →on →where →group by→having→select→order by→l ...