在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 标签对表单数据绑定相关推荐

  1. spring mvc使用@InitBinder 标签将日期格式字符串转换成Timestamp类型

    在SpringMVC中,可以采用实体类来自动绑定表单传递过来的参数,但需要注意的是,若实体类属性是Date或Timestamp类型的话,SpringMVC将无法自动绑定,会产生400错误,所以需要我们 ...

  2. java自定义标签 map_基于Spring MVC的自定义标签Tag

    基于Spring MVC的自定义标签Tag 1.环境准备 本次小项目基于Spring MVC进行测试呈现,项目依赖的jar文件列表如下: 2.搭建SpringMVC Spring MVC环境最关键的两 ...

  3. fieldset 标签 -- 对表单进行分组

    转自:https://xhmaomy-163-com.iteye.com/blog/1066977 fieldset--一个不常用的HTML标签 fieldset 标签 -- 对表单进行分组 在for ...

  4. Spring MVC入门示例教程--表单处理

    以下示例演示如何编写一个简单的基于Web的应用程序,它使用Spring Web MVC框架使用HTML表单. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework ...

  5. Spring MVC框架在进行表单提交,自动封装成对象提交,在以对象的形式入参

    最近做了一个超市订单管理系统的项目,使用的是Spring MVC 和Spring 框架. 如上图:进行新用户添加.此处jsp页面代码如下: <div class="right" ...

  6. java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

  7. Spring MVC注解、标签库、国际化

    本篇文章主要介绍自己在学习Spring MVC常用注解.标签库.国际化遇到的一些问题,分享给大家,希望对你有所帮助. 问题一:指定扫描包的位置 应该将所有控制器类都放在基本包下,并且指定该扫描包,避免 ...

  8. Spring MVC 测试 | 模拟提交表单

    在 Spring 4 MVC 单元测试例子 一文中利用Spring test 框架进行了简单的测试,代码mockMvc.perform(get("/SayHello/getAnswer&qu ...

  9. Spring MVC JSP 表单标签教程

    在本教程中,我们将通过一个示例讨论所有与Spring MVC相关的JSP表单标签. 在本教程中,我们将使用下面重要的弹簧MVC表单标签进行讨论: 表单标签 文本字段标签 选择标签 复选框 无线电盒 密 ...

最新文章

  1. R可视化包ggplot2设置透明背景实战
  2. 怎样把颜色转换为字符串
  3. 八、Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程(中)
  4. 518. 零钱兑换 II golang动态规划
  5. [html] 对一个元素设置浮动后,它的特征是什么?
  6. Spring boot :使用 Swagger 2 构建 RESTful APIs
  7. vuetify图标不正常显示
  8. i.MX6ULL 开发板在Ubuntu系统下实现串口通信
  9. 【MATLAB】进阶绘图 ( 双 y 轴图形 | plotyy 函数 | Histogram 统计图形 | hist 函数 )
  10. 送学计算机男生什么礼物好,【十大男生喜欢的礼物】男生渴望收到什么礼物_主妇网...
  11. Kermit,Xmodem,1K-Xmodem,Ymodem,Zmodem传输协议小结
  12. 解决报错Connection terminated as request was larger than 10485760
  13. Hadoop搭建之Centos 7.0系统安装
  14. UN-ESD静电二极管对静电防护的作用原理
  15. Erlang词法分析器、语法分析器(lexer-leex,yac-yecc)
  16. App Growing 季报|巨量引擎等五大平台Q2广告投放观察
  17. 世上最牛博士论文是这样的!
  18. linux查看网络信息命令
  19. 关于小数四舍五入的方式
  20. 思科1832I/1852I/2802/3802无线AP卡死不通电无射频故障维修

热门文章

  1. 虚拟地址转换成物理地址
  2. TOP10效率工具大集合,0-3岁运营/产品/设计的懒人高效工具!
  3. ExecutorService 接口学习
  4. 了解一下,Android 10 Build系统
  5. 《Java SE实战指南》10-01:特性修饰符概述
  6. ubuntu下复制文件到另一个文件夹下权限不够问题解决方法
  7. Nginx设置开启/关闭/重启/开机自启
  8. Chrome升级后不能访问任何网站和自身设置
  9. 输入一个字符串转换成十进制整数
  10. 201521123064 《Java程序设计》第7周学习总结