两个方向:

一、前台至后台:

  Spring可以自动封装Bean,也就是说可以前台通过SpringMVC传递过来的属性值会自动对应到对象中的属性并封装成javaBean,但是只能是基本数据类型(int,String等)。如果传递过来的是特殊对象,则需要手动进行封装。

  Spring提供了@initBinder(初始化绑定封装)注解和WebDataBinder工具。用户只需要向WebDataBinder注册自己需要的类型的属性编辑器即可。

/*
前台传递过来的String类型时间,通过下面的初始化绑定,转换成Date类型
*/
@initBinder
public void initBinder(WebDataBinder binder){SimpleDateFormate sdf=new SimpleDateFormate("yyyy-MM-dd HH:mm");  binder.registerCustomEditor(Date.class,new CustomDateEditor(sdf,true));//true表示允许空值,false不允许
}

  更多详细内容转载链接

  1,http://blog.csdn.net/hongxingxiaonan/article/details/50282001(前台传递过来非Date类型,及WebDataBinder的其它方法)

  2,http://www.cnblogs.com/AloneSword/p/3998943.html(前台传递过来两个不同名和不同格式的Date类型)

二、后台到前台:

  1,可以直接在后台将值存入session或request或page中,后台就可以直接通过EL表达式¥{key.value}取值

  2,主要记录后台将List<javaBean>值存入json中,前台如何取值及转换。

  我写的项目前台运用的是easyui-datagrid显示值

  (1),前台封装的值不包含特殊类型,如java.util.Date

  easyui前台显示数据可以使用JSONObject,也可以使用JSONArray。但是如果需要在datagrid表格中进行数据显示,只能使用JSONObject,这是easyui的规范。

  一般后台会将查询出的List使用JSONArray.fromObject()方法将List转换成JSONArray,但如果是在datagrid的表格中显示,则需要将JSONArray  put到JSONobject中;如果不用在datagrid表格中显示,那么JSONObject和JSONArray都可以传递给前台值。

  如combobox,后台只需要将List放入JSONArray中即可传向前台。

  先给个工具类,用于前台显示:

1 public class ResponseUtil {
2     public static void write(HttpServletResponse response, Object o) throws Exception {
3         response.setContentType("text/html;charset=utf-8");
4         PrintWriter writer = response.getWriter();
5         writer.println(o.toString());
6         writer.flush();
7         writer.close();
8     }
9 }

ResponseUtil.java

  Controller层方法,PageBean也是自己创建的实体类,是用来给sql语句的limit提供数据而已:

 1 public class PageBean {
 2     private int page;// 页数
 3     private int rows;// 每页行数
 4     private int start;// 起始页
 5
 6     public PageBean(int page, int rows) {
 7         super();
 8         this.page = page;
 9         this.rows = rows;
10     }
11
12     public int getPage() {
13         return page;
14     }
15
16     public void setPage(int page) {
17         this.page = page;
18     }
19
20     public int getRows() {
21         return rows;
22     }
23
24     public void setRows(int rows) {
25         this.rows = rows;
26     }
27
28     public int getStart() {
29         start = (page - 1) * rows;
30         return start;
31     }
32
33 }

PageBean.java

@RequestMapping("/getProductList")
public void getProductList(@RequestParam(value = "page", required = false) String page,@RequestParam(value = "rows") String rows, HttpServletResponse response, Product product) throws Exception {PageBean pageBean = new PageBean(Integer.parseInt(page), Integer.parseInt(rows));Map<String, Object> map = new HashMap<>();map.put("start", pageBean.getStart());map.put("size", pageBean.getRows());map.put("productName", product.getProductName());List<Product> productList = productService.getProductList(map);
  int total = productService.getTotal(map);
  JSONObject jsonObject = new JSONObject();JSONArray jsonArray = JSONArray.fromObject(productList);//将查询出的List先转换成JSONArrayjsonObject.put("rows", jsonArray);jsonObject.put("total", total);ResponseUtil.write(response, jsonObject);
}

  (2),前台封装的值包含如java.util.Date的特殊类型

  用Json-lib日期处理:将后台的传递的时间类型转换成前台可以显示的Json格式,用类JsonConfig和接口JsonValueProcessor处理,用法也很简单:

  源码JsonValueProcessor接口中只包含两个方法,我定义一个类JavaDateObjectToJsonUtil继承该接口,定义新类是为了可以在类中添加我需要的时间格式

 1 public class JavaDateObjectToJsonUtil implements JsonValueProcessor {
 2
 3     private String format = null;
 4
 5     public JavaDateObjectToJsonUtil(String format) {
 6         super();
 7         this.format = format;
 8     }
 9
10     @Override
11     public Object processArrayValue(Object value, JsonConfig jsonConfig) {
12         return null;
13     }
14
15     @Override
16     public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
17         if (value == null) {
18             return "";
19         }
20         if (value instanceof Date) {
21             return new SimpleDateFormat(format).format((Date) value);
22         }
23         return value.toString();
24     }
25
26 }

JavaDataObjectToJsonUtil.java

  Controller层方法,实体类SaleChance类中包含有属性java.util.Date createTime;并且有createTime的get/set方法:

@RequestMapping("/getSaleChanceList")
public void getSaleChanceList(@RequestParam(value = "page", required = false) String page,@RequestParam(value = "rows") String rows, HttpServletResponse response, SaleChance saleChance)throws Exception {PageBean pageBean = new PageBean(Integer.parseInt(page), Integer.parseInt(rows));Map<String, Object> map = new HashMap<>();map.put("start", pageBean.getStart());map.put("size", pageBean.getRows());map.put("createMan", saleChance.getCreateMan());List<SaleChance> saleChanceList = saleChanceService.getSaleChanceList(map);int total = saleChanceService.getTotal(map);JSONObject jsonObject = new JSONObject();JsonConfig jsonConfig = new JsonConfig();jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JavaDateObjectToJsonUtil("yyyy:MM:dd hh:mm"));//只需将时间类型和新类通过JsonConfig注册即可JSONArray jsonArray = JSONArray.fromObject(saleChanceList, jsonConfig);//转换成JSONArray时多带上刚注册的JsonConfigjsonObject.put("rows", jsonArray);jsonObject.put("total", total);ResponseUtil.write(response, jsonObject);}

  

  

转载于:https://www.cnblogs.com/aquriushu/p/5783691.html

SpringMVC前后台数据传递中Json格式的相互转换(前台显示格式、Json-lib日期处理)及Spring中的WebDataBinder浅析...相关推荐

  1. java解析sql查询字段_sql解析json格式字段 如何获取json中某个字段的值?

    java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...

  2. Oracle怎么获取json类型字符串值,sql解析json格式字段 如何获取json中某个字段的值?...

    java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...

  3. pandas使用strftime函数将dataframe的日期格式数据列按照指定格式(format)转化为日期(时间)字符串数据列

    pandas使用strftime函数将dataframe的日期格式数据列按照指定格式(format)转化为日期(时间)字符串数据列 目录

  4. 小程序前后台数据传递

    主要思想就是后端发布成一个URL地址,前端调用即可.在微信小程序中,通过wx.request( )发起请求. 参数名 类型 必填 默认值 说明 最低版本 url String 是   开发者服务器接口 ...

  5. hive 导出json格式 文件_hive支持json格式的数据

    Hive 支持完全 json 格式的数据  现有 json 格式的数据 test.txt ,如下 {"name":"zhang","age" ...

  6. java 返回 json格式_java 如何返回json格式数据,需要技巧

    今天上午给同事调了半个小时的程序,最后发现是在后台代码的java返回json格式的数据出了个错误.因此就想到了广大的初学者一开始学习jquery的时候可能会遇到这个问题.现在我就把我的给大家分享一下, ...

  7. [转载] 包含对象的json格式_如何把JSON数据格式转换为Python的类对象?

    参考链接: python json 12: numpy转换为json数据 JOSN字符串转换为自定义类实例对象 有时候我们有这种需求就是把一个JSON字符串转换为一个具体的Python类的实例,比如你 ...

  8. 包含对象的json格式_如何把JSON数据格式转换为Python的类对象?

    JOSN字符串转换为自定义类实例对象 有时候我们有这种需求就是把一个JSON字符串转换为一个具体的Python类的实例,比如你接收到这样一个JSON字符串如下: {"Name": ...

  9. python文件存储为json格式_python 储存文件json

    许多程序要求用户输入某些信息,例如存储游戏偏好或提供要可视化的数据.不管程序关注的是什么,程序都要将将用户提供的信息存储在列表.字典等数据结构中.当用户关闭程序时,几乎总是需要保存他们提供的信息:一个 ...

  10. arcmap小技巧之获取行政区划及json格式转shp,json转csv

    出来实习难免遇到各种没见过的问题,给我这gis小白难坏了 今天遇到北京1954坐标系转国家2000 上头甩给我一张北京54的某县耕地数据shp,告诉我这个图不能用到web端,坐标系太旧了 (小声bb: ...

最新文章

  1. golang 同一个包中函数互相调用报错 undefined 以及在 VSCode 中配置右键执行整个包文件
  2. Python培训教程分享:Python模块如何导入__all__属性?
  3. cocos2d-x jsbinding 在线更新策略设计
  4. day22 time模块
  5. python之组合数据类型
  6. java在线学习系统源码_Java在线考试系统源码
  7. 测试开发面试准备之Selenium 工作原理
  8. LeetCode 1186. 删除一次得到子数组最大和(DP)
  9. 假期读书|《步履不停》读后感
  10. 依赖倒置原则_设计模式原则之依赖倒置原则
  11. MVC多用户B2C商城系统源码分享
  12. 深入理解JVM虚拟机读书笔记——垃圾回收算法
  13. 利用VLMCSD部署本地KMS服务器(Windows + CentOS7)
  14. 量化交易实战【1】自己搭建一个的股票交易回测框架,并通过均线择时策略进行回测
  15. 涨跌的例题用C语言编辑,涨跌比率指标用法及源代码(ADR)
  16. selenium3 设置浏览器安装的位置
  17. win系统的阿里云服务器部署IDEASpringBoot项目保姆级教程
  18. 禁毒海报|国际禁毒日海报素材图片大全
  19. 写在2022的尾巴上
  20. java如何将汉字转换为拼音_将汉字转换为汉语拼音java实现

热门文章

  1. 微型计算机原理控制,微机原理与控制技术(试题).doc
  2. ubuntu字符界面login_关于Ubuntu循环登陆界面
  3. python 3.0_python基础3.0
  4. dbms_java 包不存在_Oracle的sql开发之包技术实战
  5. Google Cloud资源层级, IAM Identity and Access Management, 控制台云交互
  6. 翻译:YOLOv5 新版本——改进与评估
  7. 算法导论的道与术、工程师思维奠定能走多远
  8. 翻译:swift 5通过使用泛型进行高级异步操作Operation
  9. 【易实战】Spring Cloud Greenwich Hystrix:服务容错保护
  10. Python全局解释锁