废话少说,给你们看代码: 

    //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的更多相关文章

  1. restTemplate设置访问超时

    (一)RestTemplate 客户端 1.RestTemplate 是Spring的封装,需要spring的包 spring-web-3.0.7.RELEASE.jar 2.客户端代码: /** * ...

  2. MYSQLi数据访问分页查询

    <?php //分页工具 直接加载使用 /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录 ...

  3. java之RestTemplate的访问应用

    一.REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格.它是 ...

  4. 使用restTemplate来访问https

    1.maven: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId& ...

  5. Httpclient与RestTemplate的比较(比httpClient更优雅的Restful URL访问)

    一.HttpClient (一)HttpClient 客户端 1.HttpClient 是 apache 的开源,需要引入两个包:httpclient-4.2.4.jar 和 httpcore-4.2 ...

  6. 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

    第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...

  7. EntityFramework_MVC4中EF5 新手入门教程之三 ---3.排序、 筛选和分页

    在前面的教程你实施了一套基本的 CRUD 操作,为Student实体的 web 页.在本教程中,您将添加排序. 筛选和分页到 StudentsIndex的功能.您还将创建一个页面,并简单分组. 下面的 ...

  8. <笔记>TP5的分页传递额外参数

    默认生成的分页只有page一个参数,若需要提供额外的参数才能访问分页(例如查询结果的分页,需要传入查询关键字的参数才能显示结果),则需要设置额外参数query

  9. Mybatis之分页插件pagehelper的简单使用

    最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...

随机推荐

  1. FZU ICPC 2020 寒假训练 3

    P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实现这一功能,具体要求是:给定一 ...

  2. 到底谁才需要Service Mesh?

    本文是Service Mesh系列第1篇 随着云原生时代的来临,使用微服务架构的朋友们开始听到一个新的技术名词--Service Mesh(现在来说已经不算新了). 对于一项新技术的学习,总归绕不过两 ...

  3. 菜鸡的Java笔记 第十七 static 关键字

    static 是java中定义的一个关键字,主要是描述全局的概念,所以利用static关键字可以定义属性,定义方法        但是在90%的情况下,我们的开发代码很少会去直接编写static*// ...

  4. koa2使用ejs模板引擎

    在koa中使用ejs并不需要像在node中一样安装了还要引用,只需要npm了就行,同时还需要安装koa-views模块.如: const views = require('koa-views'); 对 ...

  5. [luogu5574]任务分配问题

    首先暴力dp,令$f_{i,j}$表示前$i$个点划分为$j$段,即有转移$f_{i,j}=\min f_{k-1,j-1}+calc(k,i)$(其中$calc(i,j)$表示求区间$[i,j]$的 ...

  6. [noi707]LP

    (以下用$Sa=\sum_{j=1}^{i}xi\cdot ai$,Sb和Sc同理)令f[i][x]表示前i个数,$Sa\le x\le Sb$时最小的Sc考虑第i个数是否选择,可以得到递推式$f[i ...

  7. ICCV2021 | PnP-DETR:用Transformer进行高效的视觉分析

    ​  前言  DETR首创了使用transformer解决视觉任务的方法,它直接将图像特征图转化为目标检测结果.尽管很有效,但由于在某些区域(如背景)上进行冗余计算,输入完整的feature maps ...

  8. 【Microsoft Azure 的1024种玩法】六、使用Azure Cloud Shell对Linux VirtualMachines 进行生命周期管理

    [文章简介] Azure Cloud Shell 是一个用于管理 Azure 资源的.可通过浏览器访问的交互式经验证 shell. 它使用户能够灵活选择最适合自己工作方式的 shell 体验,本篇文章 ...

  9. oracle和mysql的拼接查询

    oracle的 SELECT * FROM sys_user a WHERE 1=1 AND a.company_id || a.login_name IN('3001rddb414') 196676 ...

  10. x86汇编反编译到c语言之——(2)if语句

    一. 测试的C语句及编译后的x86汇编代码 int a; int b; int main(void) { int c; if (c) a = 4; else b = 5; return 0; } 1 ...