页面报错:
成都创新互联专注于扎兰屯企业网站建设,成都响应式网站建设公司,商城网站建设。扎兰屯网站建设公司,为扎兰屯等地区提供建站服务。全流程按需开发,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
后台错误:
Field error in object 'user' on field '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 java.util.Date for value '2013-06-24'; nested exception is java.lang.IllegalArgumentException]
解决方案1:在对应的实体类属性上加入 @DateTimeFormat(pattern = "yyyy-MM-dd")
解决方案2:不使用 <mvc:annotation-driven/>注解
使用 DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 注解驱动配置
在对应的实体类属性上加入 @DateTimeFormat(pattern = "yyyy-MM-dd")
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="webBindingInitializer"> <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> <property name="conversionService"> <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/> </property> </bean> </property> </bean>
3、使用 @InitBinder注解,注册一个父类Controller(BaseController),其他Controller去继承它
Springmvc配置文件 <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
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); } } }); } }
以上这篇解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持创新互联。
文章名称:解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题
文章源于:https://www.cdcxhl.com/article6/joccog.html
成都网站建设公司_创新互联,为您提供动态网站、网站导航、网站收录、Google、标签优化、建站公司
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联