spring mvc使用@InitBinder 标签对表单数据绑定
在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定。
解决的办法就是使用spring mvc提供的@InitBinder标签
在我的项目中是在BaseController中增加方法initBinder,并使用注解@InitBinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器,当然你如果不嫌麻烦,你也可以单独的写在你的每一个controller中。剩下的控制器都继承该类。spring自己提供了大量的实现类,诸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等许多,基本上够用。
当然,我们也可以不使用他自己自带这些编辑器类,那下面我们自己去构造几个
import org.springframework.beans.propertyeditors.PropertiesEditor;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(); }
}
import org.springframework.beans.propertyeditors.PropertiesEditor;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(); }
}
import org.springframework.beans.propertyeditors.PropertiesEditor;public class FloatEditor extends PropertiesEditor { @Override public void setAsText(String text) throws IllegalArgumentException { if (text == null || text.equals("")) { text = "0"; } setValue(Float.parseFloat(text)); } @Override public String getAsText() { return getValue().toString(); }
}
import org.springframework.beans.propertyeditors.PropertiesEditor;public class LongEditor extends PropertiesEditor { @Override public void setAsText(String text) throws IllegalArgumentException { if (text == null || text.equals("")) { text = "0"; } setValue(Long.parseLong(text)); } @Override public String getAsText() { return getValue().toString(); }
}
在BaseController中
@InitBinder protected void initBinder(WebDataBinder binder) { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
// binder.registerCustomEditor(int.class, new CustomNumberEditor(int.class, true)); binder.registerCustomEditor(int.class, new IntegerEditor());
// binder.registerCustomEditor(long.class, new CustomNumberEditor(long.class, true));binder.registerCustomEditor(long.class, new LongEditor()); binder.registerCustomEditor(double.class, new DoubleEditor()); binder.registerCustomEditor(float.class, new FloatEditor()); }
public class org.springframework.beans.propertyeditors.PropertiesEditor extends java.beans.PropertyEditorSupport {
看到没?如果你的编辑器类直接继承PropertyEditorSupport也可以。
先就这样吧,洗洗啪啪啪。。。
spring mvc使用@InitBinder 标签对表单数据绑定相关推荐
- spring mvc使用@InitBinder 标签将日期格式字符串转换成Timestamp类型
在SpringMVC中,可以采用实体类来自动绑定表单传递过来的参数,但需要注意的是,若实体类属性是Date或Timestamp类型的话,SpringMVC将无法自动绑定,会产生400错误,所以需要我们 ...
- java自定义标签 map_基于Spring MVC的自定义标签Tag
基于Spring MVC的自定义标签Tag 1.环境准备 本次小项目基于Spring MVC进行测试呈现,项目依赖的jar文件列表如下: 2.搭建SpringMVC Spring MVC环境最关键的两 ...
- fieldset 标签 -- 对表单进行分组
转自:https://xhmaomy-163-com.iteye.com/blog/1066977 fieldset--一个不常用的HTML标签 fieldset 标签 -- 对表单进行分组 在for ...
- Spring MVC入门示例教程--表单处理
以下示例演示如何编写一个简单的基于Web的应用程序,它使用Spring Web MVC框架使用HTML表单. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework ...
- Spring MVC框架在进行表单提交,自动封装成对象提交,在以对象的形式入参
最近做了一个超市订单管理系统的项目,使用的是Spring MVC 和Spring 框架. 如上图:进行新用户添加.此处jsp页面代码如下: <div class="right" ...
- java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种
第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...
- Spring MVC注解、标签库、国际化
本篇文章主要介绍自己在学习Spring MVC常用注解.标签库.国际化遇到的一些问题,分享给大家,希望对你有所帮助. 问题一:指定扫描包的位置 应该将所有控制器类都放在基本包下,并且指定该扫描包,避免 ...
- Spring MVC 测试 | 模拟提交表单
在 Spring 4 MVC 单元测试例子 一文中利用Spring test 框架进行了简单的测试,代码mockMvc.perform(get("/SayHello/getAnswer&qu ...
- Spring MVC JSP 表单标签教程
在本教程中,我们将通过一个示例讨论所有与Spring MVC相关的JSP表单标签. 在本教程中,我们将使用下面重要的弹簧MVC表单标签进行讨论: 表单标签 文本字段标签 选择标签 复选框 无线电盒 密 ...
最新文章
- R可视化包ggplot2设置透明背景实战
- 怎样把颜色转换为字符串
- 八、Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程(中)
- 518. 零钱兑换 II golang动态规划
- [html] 对一个元素设置浮动后,它的特征是什么?
- Spring boot :使用 Swagger 2 构建 RESTful APIs
- vuetify图标不正常显示
- i.MX6ULL 开发板在Ubuntu系统下实现串口通信
- 【MATLAB】进阶绘图 ( 双 y 轴图形 | plotyy 函数 | Histogram 统计图形 | hist 函数 )
- 送学计算机男生什么礼物好,【十大男生喜欢的礼物】男生渴望收到什么礼物_主妇网...
- Kermit,Xmodem,1K-Xmodem,Ymodem,Zmodem传输协议小结
- 解决报错Connection terminated as request was larger than 10485760
- Hadoop搭建之Centos 7.0系统安装
- UN-ESD静电二极管对静电防护的作用原理
- Erlang词法分析器、语法分析器(lexer-leex,yac-yecc)
- App Growing 季报|巨量引擎等五大平台Q2广告投放观察
- 世上最牛博士论文是这样的!
- linux查看网络信息命令
- 关于小数四舍五入的方式
- 思科1832I/1852I/2802/3802无线AP卡死不通电无射频故障维修