报这个错直接原因就是表单传过来的参数拦截器在包装的时候出错,你传过来的的参数无法转换为相应属性的类型,比如你前面传过来个19990312,而对应的属性类型是date,这时候就无法封装。但你又没有在action下面配置input视图,所以报异常!解决办法,配置一个name为input的result就行了,然后做相应的回显操作:
界面使用struts2自带的标签,能轻松实现回显功能:
<!-- 使用struts2自带的标签实现回显 -->
<textarea rows="1" cols="20">使用struts2自带的标签实现回显 </textarea>
<s:form action="testform/getform">
<s:textfield name="username"/>
<s:textfield name="age"/>
<s:textfield name="birthday"/>
<s:submit value="submit"></s:submit>
</s:form>
struts.xml中的相关配置:
<action name="getform" class="com.dimples.action.TestFormAction" method="justTest">
<result name="success">/jsp/show.jsp</result>
<result name="input">/index.jsp</result> //拦截器封装异常时会返回input,就会走这里
</action>
动作类中的相关属性:
private String username;
private Integer age;
private Date birthday;
执行:在页面的生日字段输入11时,会再次回到这个页面,并回显数据: