错误描述:
jsp页面中使用了<html:form></html:form>标签后,再提交过程中struts要做一系列验证,如
果有文本框中填写日期而form中对应的是java.util.Date类型就会报argument type mismatch
异常。
原因:
ActionServlet在接受到页面的请求后,会调用RequestUtils.populate方法对Form进行填值,
而此方法又调用到BeanUtils.populate方法,而该方法进行填值时对不同类型的会进行转换,
而默认的ActionServlet并没有注册相应的转换函数,所以会导致转换出现错误
解决办法:
1.ActionForm中把Date类型转换为String类型
2.ActionFrom中仍使用Date类型, 自定义一个日期转换类DateConverter(需要实现
Converter接口),然后在自定义的ActionServlet或者Action基类中注册DateConverter:
ConvertUtils.register(new DateConverter(), Date.class)。