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的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...
随机推荐
- python nose测试框架全面介绍十四 --- nose中的只跑上次失败用例
玩过一段时间nose的朋友,一定会发现nose中有一个--failed的功能,官方解释为: --failed Run the tests that failed in the last test ru ...
- 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)
[JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...
- [bzoj2756]奇怪的游戏
对棋盘黑白染色后,若n和m都是奇数(即白色和黑色点数不同),可以直接算得答案(根据白-黑不变):若n和m不都是奇数,二分答案(二分的上限要大一点,开$2^50$),最后都要用用网络流来判定.考虑判定, ...
- 如何基于 React 封装一个组件
如何基于 React 封装一个组件 前言 很多小伙伴在第一次尝试封装组件时会和我一样碰到许多问题,比如人家的组件会有 color 属性,我们在使用组件时传入组件文档中说明的属性值如 primary , ...
- Gin 如何动态生成模型 swagger 文档
在做 API 接口开发时, 一般会统一 API 返回格式, 例如 { "code": 200, "data": { //xxxxx //xxxxx }, &qu ...
- CF187D BRT Contract
考虑如果哪次经过了红灯则显然已经和出发的时间没关系了. 然后我们需要做的是怎么样找到最近的一个是红灯的点. 然后实际下是我们做一个前缀和:\(L_i = \sum d_i\) 然后求\(\min (L ...
- ARC128D
考虑我们直接\(dp\). 那么需要快速的求出一段是否可以被消掉只剩两端. 我们可以考虑反过来做的. 我们知道如果全为\(abab\)型或者\(aa\)型则无法消掉 那么我们要前缀和,以及遇到\(aa ...
- PowerDotNet平台化软件架构设计与实现系列(05):ETCD分布式键值存储平台
ETCD目前在PowerDotNet已经被用于注册中心和配置管理(常见的配置中心在PowerDotNet中仅仅是一个小小的模块而已)中,作为基础设施的重要组成部分,ETCD的重要性不言而喻. 本文简单 ...
- 感谢 git
今天对程序大修了一下,顺便把所有算例测试了一遍,突然发现二维浅水方程有些算例出现了明显的错误. 这次突然出现的错误让我有点措手不及,因为一直没有修改过浅水方程求解器,所以这些算例很久没有测试过了.硬着 ...
- doxygen相关命令
主要配置修改 整个程序配置分几个部分 Project related configuration options 项目相关,包括: 项目名 输出目录 输出语言 是否显示继承属性 是否对C.Java.F ...