美文网首页
使用WebBindingInitializer转换数据 Day2

使用WebBindingInitializer转换数据 Day2

作者: Ernest_Chou | 来源:发表于2018-12-14 13:29 被阅读0次

    在使用SpringMVC的时候,经常会遇到表单中的日期字符串和JavaBeanDate类型的转换,而SpringMVC默认不支持这个格式的转换,所以需要手动配置,自定义数据的绑定才能解决这个问题。类型转换器常用于转换double、float、date等类型,SpringMVC在支持自身的转换器框架的同时也支持JavaBeanPropertyEditor,可以通过在控制器中使用@initBinder添加自定义的编辑器,也可以通过WebBindingInitializer装配全局的类型编辑器。WebDataBinder是用来绑定请求参数到指定的属性编辑器.由于前台传到controller里的值是String类型的,当往ModelSet这个值的时候,如果set的这个属性是个对象,Spring就会去找到对应的editor进行转换,然后再SET进去。下面介绍如何使用自定义的类型编辑器

    使用WebBindingInitializer转换数据:

    • 自定义属性编辑器
    • 实现WebBindingInitializer接口
    • 通过AnnotationMethodHandlerAdapter装配自定义编辑器
    // 自定义属性编辑器
    public class DateEditor extends PropertyEditorSupport {
    
        // 将传入的字符串数据转换成Date类型
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            try {
                Date date = dateFormat.parse(text);
                setValue(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        
    }
    
    
    // 实现WebBindingInitializer接口
    public class DateBindingInitializer implements WebBindingInitializer {
    
        @Override
        public void initBinder(WebDataBinder binder, WebRequest request) {
            // 注册自定义编辑器
            binder.registerCustomEditor(Date.class, new DateEditor());
    
        }
    
    }
    
    • springmvc-config.xml
     <!-- 通过AnnotationMethodHandlerAdapter装配自定义编辑器 -->
        <bean
            class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
            <property name="webBindingInitializer">
                <bean class="com.zhougl.binding.DateBindingInitializer" />
            </property>
        </bean>
    

    相关文章

      网友评论

          本文标题:使用WebBindingInitializer转换数据 Day2

          本文链接:https://www.haomeiwen.com/subject/fdxghqtx.html