public class CustomBindingInitializer implements WebBindingInitializer {
@Override
public void initBinder(WebDataBinder binder, WebRequest request) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH🇲🇲ss");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
}
xml中配置如下:<mvc:annotation-driven/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> </list> </property> <property name="webBindingInitializer"> <bean class="com.demo.util.CustomBindingInitializer"/> </property> </bean>发现webBindingInitializer不起作用
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> </list> </property> <property name="webBindingInitializer"> <bean class="com.demo.util.CustomBindingInitializer"/> </property> </bean> <mvc:annotation-driven/>网上找到把<mvc:annotation-driven/>放到下面就可以了,不过没有解释,有人知道是为什么吗
不要用 AnnotationMethodHandlerAdapter,用RequestMappingHandlerAdapter,本质上是因为mvc-annotation和前者有冲突,在最新的spring的版本下怎么换顺序都是没用的######@金氧 不知道你的版本,我3.1用这个是有效的######RequestMappingHandlerAdapter 用这个也没用######遇到相同问题,很急,网上怎么找不到答案###### 他奶奶的,总算找到解决办法了
使用conversion-service来注册自定义的converter DataBinder实现了PropertyEditorRegistry, TypeConverter这两个interface,而在spring mvc实际处理时,返回值都是return binder.convertIfNecessary(见HandlerMethodInvoker中的具体处理逻辑)。因此可以使用customer conversionService来实现自定义的类型转换。 从<mvc:annotation-driven />中配置可以看出,AnnotationMethodHandlerAdapter已经配置了webBindingInitializer,我们可以通过设置其属性conversionService来实现自定义类型转换。 <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="com.xxx.ark.core.web.DateConverter" /> </list> </property> </bean> 需要修改spring service context xml配置文件中的annotation-driven,增加属性conversion-service指向新增的conversionService bean。 <mvc:annotation-driven conversion-service="conversionService" /> 实际自定义的converter如下。 public class DateConverter implements Converter<String, Date> { @Override public Date convert(String source) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); try { return dateFormat.parse(source); } catch (ParseException e) { e.printStackTrace(); } return null; }######其实这个问题在JSON视图也会有,需要手动屏蔽
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。