同步发布:http://www.yuanrengu.com/index.php/springmvc-user-initbinder.html

  在使用SpingMVC框架的项目中,经常会遇到页面某些数据类型是Date、Integer、Double等的数据要绑定到控制器的实体,或者控制器需要接受这些数据,如果这类数据类型不做处理的话将无法绑定。

这里我们可以使用注解@InitBinder来解决这些问题,这样SpingMVC在绑定表单之前,都会先注册这些编辑器。一般会将这些方法些在BaseController中,需要进行这类转换的控制器只需继承BaseController即可。其实Spring提供了很多的实现类,如CustomDateEditor、CustomBooleanEditor、CustomNumberEditor等,基本上是够用的。

demo如下:

public class BaseController {

    @InitBinder
protected void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new MyDateEditor());
binder.registerCustomEditor(Double.class, new DoubleEditor());
binder.registerCustomEditor(Integer.class, new IntegerEditor());
} private class MyDateEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = format.parse(text);
} catch (ParseException e) {
format = new SimpleDateFormat("yyyy-MM-dd");
try {
date = format.parse(text);
} catch (ParseException e1) {
}
}
setValue(date);
}
} public class DoubleEditor extends PropertiesEditor {
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (text == null || text.equals("")) {
text = "0";
}
setValue(Double.parseDouble(text));
} @Override
public String getAsText() {
return getValue().toString();
}
} public class IntegerEditor extends PropertiesEditor {
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (text == null || text.equals("")) {
text = "0";
}
setValue(Integer.parseInt(text));
} @Override
public String getAsText() {
return getValue().toString();
}
} }

最新文章

  1. CMD安装/删除服务
  2. gitlab+gerrit+jenkins持续集成框架
  3. js原型和构造函数混合模式
  4. 装tortoiseSVN时遇到的坑
  5. ZOJ 1013 Great Equipment(DP)
  6. c - 字符串的反转
  7. 一】Maven入门
  8. Android4.2中Phone的P-sensor的应用的分析。
  9. MySQL5.7绿色版(免装版)的初始化和修改密码
  10. Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击
  11. Esper剖析
  12. [编译] 6、开源两个简单且有用的安卓APP命令行开发工具和nRF51822命令行开发工具
  13. python3csv与xlsx文件操作模块(csv、xlsxwriter)
  14. PHP拿到接口数据返回的json以及传参-----ajax 跨域请求 ---
  15. 【转】ubuntu 双机热备
  16. 【XSY2190】Alice and Bob VI 树形DP 树剖
  17. Tp5.1使用导出Excel
  18. c++ cmakelist 详解
  19. jQuery对象与JS原生对象之间的转换
  20. Poj 1321 棋盘问题(搜索)

热门文章

  1. javascript常用数组算法总结
  2. sql server 中xml 数据类型的insert、update、delete
  3. C语言的基础
  4. 【转载】 Spark性能优化指南——基础篇
  5. VIM-Sed常用的一些记录。。。逐渐学习。。
  6. LintCode Climbing Stairs
  7. C#中as用法
  8. 为windows应用程序提供托盘图标
  9. ✡ leetcode 169. Majority Element 求出现次数最多的数 --------- java
  10. DFS序详解