解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题

网友投稿 461 2023-05-05


解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题

页面报错:

后台错误:

Field error in object 'user' on fhttp://ield 'birthday': rejected value [2013-06-24]; codes [typeMismatch.user.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.birthday,birthday]; arguments []; default message [birthday]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'birthday'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type jhttp://ava.util.Date for value '2013-06-24'; nested exception is java.lang.IllegalArgumentException]

解决方案1:在对应的实体类属性上加入 @DateTimeFormat(pattern = "yyyy-MM-dd")

解决方案2:不使用 注解

使用 DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 注解驱动配置

在对应的实体类属性上加入 @DateTimeFormat(pattern = "yyyy-MM-dd")

3、使用 @InitBinder注解,注册一个父类Controller(BaseController),其他Controller去继承它

Springmvc配置文件

public class BaseController {

@InitBinder

public void initBinder(WebDataBinder binder) {

/**

* 第一种方式:使用WebDataBinder注册一个自定义的编辑器,编辑器是日期类型

* 使用自定义的日期编辑器,日期格式:yyyy-MM-dd,第二个参数为是否为空 true代表可以为空

*/

binder.registerCustomEditor(Date.class, new CustomDateEditor(

new SimpleDateFormat("yyyy-MM-dd"), true));

}

}

或者使用下面的方式

public class BaseController {

@InitBinder

public void initBinder(WebDataBinder binder) {

/**

* 方式二:使用WebDataBinder注册一个自定义的编辑器,编辑器是日期类型

* 使用属性编辑器实现:重载setAsText,getAsText

*/

binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {

@Override

public String getAsText() {

return new SimpleDateFormat("yyyy-MM-dd")

.format((Date) getValue());

}

@Override

public void setAsText(String text) {

try {

setValue(new SimpleDateFormat("yyyy-MM-dd").parse(text));

} catch (Exception e) {

e.printStackTrace();

setValue(null);

}

}

});

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java多线程之火车售票系统模拟实例
下一篇:详解java的值传递、地址传递、引用传递
相关文章

 发表评论

暂时没有评论,来抢沙发吧~