RestTemplate进行访问分页PageInfo
废话少说,给你们看代码:
- //provide的controller
- @ResponseBody
- @RequestMapping(value = "details",method = RequestMethod.GET)
- public PageInfo<Detail> queryByTitle(@RequestParam(required = false) String title, @RequestParam(required = false) Integer pageNum,@RequestParam(required = false) Integer pageSize){
- System.out.println("title:"+title+",pageNum:"+pageNum+",pageSize:"+pageSize);
- if (pageNum == null) {
- pageNum=1;
- }
- if (pageSize == null) {
- pageSize=2;
- }
- PageInfo<Detail> pageInfo = detailService.queryByTitle(title, pageNum, pageSize);
- return pageInfo;
- }
记得加@ResponseBody注解,不然会consumer的请求会报org.springframework.web.client.HttpClientErrorException$NotFound: 404 null。
- //负责调用provider的方法,获取数据
- @Autowired
- private RestTemplate restTemplate;
- //在provider端资源的路径
- private String url="http://localhost:8080/details";
- //导游provider的方法查询所有用户
- public PageInfo<Detail> queryByTitle(String title,Integer pageNum,Integer pageSize){
- Map<String, Object> params = new HashMap<>();
- params.put("pageSize", pageSize);
- params.put("pageNum", pageNum);
- params.put("title", title);
- //使用占位符,map中不能没有占位符的键值对
- PageInfo pageInfo = restTemplate.getForObject(url + "?pageSize={pageSize}&pageNum={pageNum}&title={title}", PageInfo.class, params);
- //集合转json再转回来
- String json = JSON.toJSONString(pageInfo.getList());
- List<Detail> details = JSON.parseArray(json, Detail.class);
- pageInfo.setList(details);
- return pageInfo;
- }
集合转json再转回来,这一步是个大坑啊,说起来都是泪,直接返回pageInfo,前台Thymeleaf页面也可以遍历出集合并拿到值进行展示,但怪就怪在,我Timestamp的日期不能进行格式化(<td th:text="${#dates.format(detail.createdate, 'yyyy-MM-dd HH:mm')}"></td>),我不进行格式化日期,页面可以输出,说明我的日期不是空的。但是日期不格式化也不行,报错EL1029E: A problem occurred when trying to execute method 'format' on object和Failed to convert from type [java.lang.String] to type [java.util.Date]什么的。百度中。。。 考虑是不是格式化方法不行 ,试了各种格式化方式发现还是不行,说我日期是String类型的,我寻思着搁后台遍历打印一下看看日期是不是Timestamp类型的,不遍历没啥,一遍历报错!java.util.LinkedHashMap cannot be cast to com.zhou.entity.Detail,说不能转换成我的Detail实体类 ??? ,百度。。。 (https://blog.csdn.net/shijiujiu33/article/details/93410585)返回的时候会把PageInfo转变成json的形式(内部是jackjson技术支持的)
所以遍历集合就会报上面的异常(具体情况也不太清楚)。根据这篇博客,试了一下,发现可以遍历了,而且页面也可以格式化日期了。深坑!!!。
如果是返回对象集合的话建议这样做:
- @Autowired
- private RestTemplate restTemplate;
- //在provider端资源的路径
- private String url="http://localhost:8080/comments";
- //根据新闻编号查询所有评论
- public List<Comment> queryByNewsId(Integer id){
- Comment[] comment = restTemplate.getForObject(url + "/" + id, Comment[].class);
- return Arrays.asList(comment);
- }
返回对象数组,再将其转为对象集合。就不会出现上面的情况,但我是直接返回PageInfo,第一次用RestTemplate,如有大佬,还望指点一下。
RestTemplate进行访问分页PageInfo的更多相关文章
- restTemplate设置访问超时
(一)RestTemplate 客户端 1.RestTemplate 是Spring的封装,需要spring的包 spring-web-3.0.7.RELEASE.jar 2.客户端代码: /** * ...
- MYSQLi数据访问分页查询
<?php //分页工具 直接加载使用 /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录 ...
- java之RestTemplate的访问应用
一.REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格.它是 ...
- 使用restTemplate来访问https
1.maven: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId& ...
- Httpclient与RestTemplate的比较(比httpClient更优雅的Restful URL访问)
一.HttpClient (一)HttpClient 客户端 1.HttpClient 是 apache 的开源,需要引入两个包:httpclient-4.2.4.jar 和 httpcore-4.2 ...
- 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件
第三章 建议学习时间8小时 总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...
- EntityFramework_MVC4中EF5 新手入门教程之三 ---3.排序、 筛选和分页
在前面的教程你实施了一套基本的 CRUD 操作,为Student实体的 web 页.在本教程中,您将添加排序. 筛选和分页到 StudentsIndex的功能.您还将创建一个页面,并简单分组. 下面的 ...
- <笔记>TP5的分页传递额外参数
默认生成的分页只有page一个参数,若需要提供额外的参数才能访问分页(例如查询结果的分页,需要传入查询关键字的参数才能显示结果),则需要设置额外参数query
- Mybatis之分页插件pagehelper的简单使用
最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...
随机推荐
- java读取大文件内容到Elasticsearch分析(手把手教你java处理超大csv文件)
现在需要快算分析一个2g的csv文件: 基于掌握的知识,使用java按行读取文件,批量导入数据到es, 然后利用es强大的聚合能力分析数据,2个小时搞定! package com.example.de ...
- python datetime 增减以月为单位的时间段
datetime.timedelta(days=10) # 可以 datetime.timedelta(months=1) # 不可以 替代: from datetime import date ...
- oracle的 listagg() WITHIN GROUP () 行转列函数的使用
1.使用条件查询 查询部门为20的员工列表 -- 查询部门为20的员工列表 SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO ...
- FZU ICPC 2020 寒假训练 6 —— 字符串处理
P1603 斯诺登的密码 题目描述 2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混迹于一架开往委内瑞拉的飞机.但是,这件事情太不周密了,因为FBI的间谍早已获悉他的具体位置--但这不是最重要的 ...
- Zabbix错误”zbx_mem_malloc(): out of memory”解决方法
Zabbix Server突然挂了,查看log报错如下: using configuration file: /etc/zabbix/zabbix_server.conf ... [file:dbco ...
- char数据可以放入int[]中会自动转换
int[] ary ={'b','c','a','d','e','f'};System.out.println(ary[0]);//98String str = new String(ary, 2, ...
- 31、下一个排列 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(31)下一个排列 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "双指针法 ...
- Kubernetes:了解 Deployment
本文为作者的 Kubernetes 系列电子书的一部分,电子书已经开源,欢迎关注,电子书浏览地址: https://k8s.whuanle.cn[适合国内访问] https://ek8s.whuanl ...
- Python 3 快速入门 1 —— 数据类型与变量
本文假设你已经有一门面向对象编程语言基础,如Java等,且希望快速了解并使用Python语言.本文对重点语法和数据结构以及用法进行详细说明,同时对一些难以理解的点进行了图解,以便大家快速入门.一些较偏 ...
- 全面了解 Javascript Prototype Chain 原型链
原型链可以说是Javascript的核心特征之一,当然也是难点之一.学过其它面向对象的编程语言后再学习Javascript多少会感到有些迷惑.虽然Javascript也可以说是面向对象的语言,但是其实 ...