Spring全局数据绑定

时间:2014-06-03 19:58:23

标签: spring spring-mvc

我的控制器中有一个使用以下代码的自定义日期活页夹:

@InitBinder
private void dateBinder(WebDataBinder binder) {
    // The date format to parse or output your dates
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    // Create a new CustomDateEditor
    CustomDateEditor editor = new CustomDateEditor(dateFormat, true);
    // Register it as custom editor for the Date type
    binder.registerCustomEditor(Date.class, editor);
}

这很好用,但是我试图在全球范围内应用它,为此,我创建了一个类

public class ClinicBindingInitializer implements WebBindingInitializer {

    @Override
    public void initBinder(WebDataBinder binder, WebRequest arg1) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        // Create a new CustomDateEditor
        CustomDateEditor editor = new CustomDateEditor(dateFormat, true);
        binder.registerCustomEditor(Date.class, editor);
    }
}

并在我的servlet-context.xml中添加以下配置

<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <beans:property name="cacheSeconds" value="0" />
    <beans:property name="webBindingInitializer" ref="webBindingInitializer"/>
</beans:bean>

<beans:bean id="webBindingInitializer"
    class="br.com.appus.hub.infrastructure.web.ClinicBindingInitializer">
</beans:bean>

并删除控制器中的init绑定。然而,它不起作用。我检查了一些地方,看起来它是正确的。还有什么我应该做的吗?

编辑:忘了提到Spring的版本。 3.1.1

1 个答案:

答案 0 :(得分:1)

似乎默认AnnotationMethodHandlerAdapter(由annotation-config tag注册)首先处理请求。

尝试在处理程序适配器中设置订单,或使用ConversionService代替。

<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <beans:property name="cacheSeconds" value="0" />
    <beans:property name="webBindingInitializer" ref="webBindingInitializer"/>
    <beans:property name="order" value="0" />  <!-- default value is Integer.MAX_VALUE -->
</beans:bean>