Struts2经过validate()返回INPUT页面后无法再提交ACTION方法



Struts2经过validate()返回INPUT页面后无法再提交ACTION方法。一开始进入这个页面的时候,一切都正常,但是,当提交表单后,服务器验证失败再返回到这个页面的时候,再经过提交都不能进行Action提交了,经过研究发现,的确是由于表单验证失败造成的。Struts2在执行action方法前,都要先执行validateXXX()和validate()方法来进行表单验证,由于我这里使用了表单验证机制,所以如果在验证时发现错误,则会将错误信息放入filedError中,并跳过action方法,直接返回到INPUT指定的视图中。这样,当返回INPUT视图后,视图中再通过<s:action>去请求另一个action时,会将之前filedError一起带入到这个action中,这个action(即newsList)同样也需要调用validate方法进行验证,当发现了存在filedError后,就会立即返回到这个action指定的input视图中,而并不执行这个action的逻辑方法。因此,也就出现了上面的action执行失败的问题了。

既然是由于发现filedError造成的,那么要解决这个问题,在第次校验之前做一次this.clearErrorsAndMessages();就可以了。