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

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

相关文章

  • 解决idea默认带的equals和hashcode引起的bug

    解决idea默认带的equals和hashcode引起的bug

    这篇文章主要介绍了解决idea默认带的equals和hashcode引起的bug,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 在SpringBoot项目中使用Spring Cloud Sentinel实现流量控制

    在SpringBoot项目中使用Spring Cloud Sentinel实现流量控制

    随着微服务架构的流行,服务之间的调用变得越来越频繁和复杂,流量控制是保障系统稳定性的重要手段之一,它可以帮助我们避免因过载而导致的服务不可用,本文将介绍如何在Spring Boot项目中使用Spring Cloud Sentinel来实现流量控制,需要的朋友可以参考下
    2024-08-08
  • Java8实战之Stream的延迟计算

    Java8实战之Stream的延迟计算

    JDK中Stream的中间函数如 filter(Predicate super T>)是惰性求值的,filter并非对流中所有元素调用传递给它的Predicate,下面这篇文章主要给大家介绍了关于Java8实战之Stream延迟计算的相关资料,需要的朋友可以参考下
    2021-09-09
  • Java图片处理开源框架Thumbnailator

    Java图片处理开源框架Thumbnailator

    这篇文章主要为大家详细介绍了Java图片处理开源框架Thumbnailator的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • DynamicDataSource怎样解决多数据源的事务问题

    DynamicDataSource怎样解决多数据源的事务问题

    这篇文章主要介绍了DynamicDataSource怎样解决多数据源的事务问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java中的内存泄露问题和解决办法

    Java中的内存泄露问题和解决办法

    大家好,本篇文章主要讲的是Java中的内存泄露问题和解决办法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 通过System.getProperty配置JVM系统属性

    通过System.getProperty配置JVM系统属性

    这篇文章主要介绍了通过System.getProperty配置JVM系统属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Spring高级注解之@DependsOn详解

    Spring高级注解之@DependsOn详解

    这篇文章主要介绍了Spring高级注解之@DependsOn详解,@DependsOn注解可以定义在类和方法上,意思是我这个组件要依赖于另一个组件,也就是说被依赖的组件会比该组件先注册到IOC容器中,需要的朋友可以参考下
    2024-01-01
  • 深入理解mybatis的ParamNameResolver

    深入理解mybatis的ParamNameResolver

    ParamNameResolver是 MyBatis 中的一个重要组件,它为 MyBatis 提供了一种方便的方式来获取方法参数的名称,本文主要介绍了深入理解mybatis的ParamNameResolver,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Java使用Graphics2D绘制SVG和PNG的方法

    Java使用Graphics2D绘制SVG和PNG的方法

    Java提供了许多图形处理类和方法,如Graphics2D、AffineTransform、Stroke等,这些都可以用于绘制SVG图像,Graphics2D是Java中用于绘制2D图形的类,本文给大家介绍如何使用Graphics2D绘制SVG和PNG,需要的朋友可以参考下
    2023-06-06

最新评论