使用WebBindingInitializer转换数据 Day2

2018-12-14  本文已影响0人  Ernest_Chou

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

使用WebBindingInitializer转换数据:

// 自定义属性编辑器
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());

    }

}
 <!-- 通过AnnotationMethodHandlerAdapter装配自定义编辑器 -->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="webBindingInitializer">
            <bean class="com.zhougl.binding.DateBindingInitializer" />
        </property>
    </bean>
上一篇下一篇

猜你喜欢

热点阅读