我是靠谱客的博主 务实小土豆,最近开发中收集的这篇文章主要介绍CustomDateEditor,WebBindingInitializer ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

请问我使用了Spring MVC表单验证Date类型,已经在继承了SimpleFormController的自己的Controller里的initBinder()写好:
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
CustomDateEditor dateEditor = new CustomDateEditor(fmt, true);
binder.registerCustomEditor(Date.class, dateEditor);
数据绑定没有问题,但是客户提交数据时,输入字母或者非yyyy-MM-dd格式的字符串,比如输入dd,
<form:errors path="time" cssClass="error"/>处输出错误:
Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property time; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: "dd"

问题是,如何才能将这样的错误信息变成自己想要的字符提示.本人已经试过在Validator里验证,判断当为fieldError时error.rejectValue(),但发现我想要的错误提示却跟在先前的IllegalArgumentException提示的后面一起弹出,极度郁闷!

public class MyBindingInitializer implements WebBindingInitializer {

public void initBinder(WebDataBinder binder, WebRequest request) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); //可以設定任意的日期格式
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class,
new CustomDateEditor(dateFormat, true));
binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));
}
}
<!-- property editor -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="com.morris.MyBindingInitializer"/>
</property>
</bean>

/**
* 注册java.util.Date类型
*
* @param binder
*/
@InitBinder
public void initBinder(WebDataBinder binder) {
DateFormat dateFormat = new SimpleDateFormat(AppDateUtils.yyyyMMdd);
binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(dateFormat, true));
}

最后

以上就是务实小土豆为你收集整理的CustomDateEditor,WebBindingInitializer 的全部内容,希望文章能够帮你解决CustomDateEditor,WebBindingInitializer 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部