实现一个
PropertyEditorRegistrar注册所有自定义的
PropertyEditors。然后在您的配置中添加
ConfigurableWebBindingInitializer与创建的内容关联的,并将其关联
PropertyEditorRegistrar到
HandlerAdapter。
public class MyPropertyEditorRegistrar implements PropertyEditorRegistrar { public void registerCustomEditors(PropertyEditorRegistry registry) { registry.registerCustomEditor(StringWrapper.class, new StringWrapperEditor()); }}如果您
<mvc:annotation-driven/>的配置中有一个标签,则问题在于,使用该标签您无法将其添加
WebBindingInitializer到适配器中,
ConfigurableWebBindingInitializer而已添加到预配置的HandlerAdapter
旁边。您可以使用a
BeanPostProcessor来处理和配置bean。
public class MyPostProcessor implements BeanPostProcessor { public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException { if (bean instanceof RequestMappingHandlerAdapter) { WebBindingInitializer wbi = ((RequestMappingHandlerAdapter) bean).getWebBindingInitializer(); if (wbi == null) { wbi = new ConfigurableWebBindingInitializer(); ((RequestMappingHandlerAdapter) bean).setWebBindingInitializer(wbi); } if (wbi instanceof ConfigurableWebBindingInitializer) { ((ConfigurableWebBindingInitializer) wbi).setPropertyEditorRegistrar(new MyPropertyEditorRegistrar()); } } }}需要一些工作,但是可行。您也可以实现自己的
WebBindingInitializer。
如果没有标签,您可以简单地手动配置a
RequestMappingHandlerAdapter并将所有内容连接在一起。
链接
- PropertyEditorRegistrar javadoc
- ConfigurableWebBindingInitializer Javadoc
- 参考指南链接



