model类是这样的
public calss User{ private CorpAddr corpAddr; private String name; }
CorpAddr类是这样的
public class CorpAddr{ private Date birthday; }
jsp form表单映射
<spring:bind path="user.name"> <input type="text" name="name" /> </spring:bind>
这样绑定user.name属性是没问题的,但用同样的方式绑定user.corpAddr.birthday却绑定不上
<spring:bind path="user.corpAddr.birthday"> <input type="text" name="birthday" /> </spring:bind>
这样绑定不上user.corpAddr.birthday属性,要使用下面的方式
<spring:bind path="user.corpAddr.birthday"> <input type="text" name="<c:out value='${status.expression}'/>" value="<c:out value='${status.value'/>" /> </spring:bind>
这时候,提交到后台,却报了个异常,即spring mvc 表单映射日期型字段的问题。
类似这样的异常
解决方法
1.控制器继承 extends SimpleFormController
2.重写initBinder方法
@InitBinder protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); CustomDateEditor dateEditor = new CustomDateEditor(fmt, true); binder.registerCustomEditor(Date.class, dateEditor); super.initBinder(request, binder); }
注意日期格式串与页面模式一致