我的控制器中有一个使用以下代码的自定义日期活页夹:
@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
答案 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>