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