zoukankan      html  css  js  c++  java
  • @initBinder数据转换器

         在使用SpingMVC框架的项目中,经常会遇到页面某些数据类型是Date、Integer、Double等的数据要绑定到控制器的实体,或者控制器需要接受这些数据,如果这类数据类型不做处理的话将无法绑定,因为SpringMVC默认不支持这类型的格式转换,所以需要手动配置

      这里我们可以使用注解@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();    
            }    
        }  
    
    }

    原文:http://www.cnblogs.com/heyonggang/p/6186633.html

  • 相关阅读:
    爬虫第一课
    下午写的一个代码,还没调试
    ASP.NET 中添加、删除、修改记录
    C# 学习一(概念)
    读取数据库(SQL 、Access)、数据类型转换(Convert.Tostring)、数据库链接
    投票处理页面 vote.aspx.cs
    ASP.NET 读取数据库(二)
    关于控件、命名空间、参数(object sender,System.EventArgs e)
    控件的简单使用
    ADO(SQL、ACCESS 数据库链接代码)
  • 原文地址:https://www.cnblogs.com/-scl/p/7410789.html
Copyright © 2011-2022 走看看