SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法

 更新时间:2018年03月15日 08:58:54   作者:夏雪冬日  
本篇文章主要介绍了SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法,非常具有实用价值,需要的朋友可以参考下

在使用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();  
    }  
  } 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java上传文件大小受限问题的解决方法

    Java上传文件大小受限问题的解决方法

    这篇文章主要介绍了Java上传文件大小受限怎么解决,本文给大家分享问题分析及解决方案,需要的朋友可以参考下
    2023-09-09
  • Java类初始化执行流程解析

    Java类初始化执行流程解析

    这篇文章主要介绍了Java类初始化执行流程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • SpringBoot+Echarts实现请求后台数据显示饼状图

    SpringBoot+Echarts实现请求后台数据显示饼状图

    这篇文章主要介绍了SpringBoot+Echarts实现请求后台数据显示饼状图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • transactionAttributes各属性意义及配置

    transactionAttributes各属性意义及配置

    这篇文章主要介绍了transactionAttributes各属性意义及配置,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • 详解MyBatis特性之动态SQL

    详解MyBatis特性之动态SQL

    动态 SQL 是 MyBatis 的强大特性之一,这篇文章我们将结合动态SQL完成更加复杂的 SQL 操作,文章通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • 详解Java中Duration类的使用方法

    详解Java中Duration类的使用方法

    Duration类通过秒和纳秒相结合来描述一个时间量,最高精度是纳秒。本文将通过示例详细为大家讲讲Duration类的使用,需要的可以参考一下
    2022-05-05
  • spring boot 实现配置多个DispatcherServlet最简单方式

    spring boot 实现配置多个DispatcherServlet最简单方式

    这篇文章主要介绍了spring boot 实现配置多个DispatcherServlet最简单方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • SpringBoot中的Controller用法示例详解

    SpringBoot中的Controller用法示例详解

    Controller是SpringBoot里最基本的组件,他的作用是把用户提交来的请求通过对URL的匹配,分配给不同的接收器,再进行处理,然后向用户返回结果,这篇文章主要介绍了SpringBoot中的Controller用法,需要的朋友可以参考下
    2023-06-06
  • Java实战之药品管理系统的实现

    Java实战之药品管理系统的实现

    这篇文章主要介绍了利用Java实现的药品管理系统,本项目属于前后端分离的项目,分为两个角色药品管理员和取药处人员,感兴趣的小伙伴可以学习一下
    2022-04-04
  • 为什么Java中都不用a.equals(b)判断对象相等

    为什么Java中都不用a.equals(b)判断对象相等

    在面试中经常会被问,a.equals(b)和“==”的区别,那么a.equals(b)能不能判断对象相等,本文就来详细的介绍一下
    2021-06-06

最新评论