比如,当我要添加一个信用卡的时候,我需要信用卡的CardType, 这些数据是存在数据库中的,我要先通过action 的一个 create方法,取到信用卡的类型:
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwVjRjR0Z1WkdWa1FteHZZMnRUZEdGeWRDNW5hV1k9LmpwZw%3D%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwbHVRbXh2WTJzdVoybG0uanBn.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwbHVRbXh2WTJzdVoybG0uanBn.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwbHVRbXh2WTJzdVoybG0uanBn.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwVjRjR0Z1WkdWa1FteHZZMnRGYm1RdVoybG0uanBn.jpg?w=700&webp=1)
Struts的配置文件:
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
input.jsp
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
<s:select name="creditCard.creditCardTypeId" list="creditCardTypeList" listKey="creditCardTypeId"
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
....
当提交input.jsp 的时候,Validate 检查没有通过,这时我需要回到input.jsp,此时应该下拉列表框的CreditType应该被保留,只需要在example.CreditCardAction 实现 Preparable接口,并实现prepare 方法,然后在add的 action中加上
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
就可以了
prepare方法:
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwVjRjR0Z1WkdWa1FteHZZMnRUZEdGeWRDNW5hV1k9LmpwZw%3D%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwbHVRbXh2WTJzdVoybG0uanBn.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwVjRjR0Z1WkdWa1FteHZZMnRGYm1RdVoybG0uanBn.jpg?w=700&webp=1)
Add Acton:
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
这样,在验证前将首先调用 prepare方法,即使失败了回到input.jsp页面creditCardType选择框的值仍然存在。
<interceptor-ref name="defaultStack"/> 中的 defaultStack 是我们在struts.xml 中配置的,其中我们注释掉了 <interceptor-ref name="prepare"/> 这样在example.CreditCardAction中的其他Action就不会首先执行prepare方法,只有加上了 <interceptor-ref name="prepare"/> 的才会去首先执行 prepare方法。
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
![Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案 Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OelpHNHVibVYwTDNONWJuUmhlR2hwWjJoc2FXZG9kR2x1Wnk5UGRYUnNhVzVwYm1kSmJtUnBZMkYwYjNKekwwNXZibVV1WjJsbS5qcGc%3D.jpg?w=700&webp=1)
现在看下PrepareInterceptor拦截器的源代码:
public String doIntercept(ActionInvocation invocation) throws Exception {
Object action = invocation.getAction();
if (action instanceof Preparable) { //判断这个action是否是Preparable类的一个实例,也就是判断这个action有没有implement实现这个Preparable借口
try {
String[] prefixes;
if (firstCallPrepareDo) {
prefixes = new String[] {ALT_PREPARE_PREFIX, PREPARE_PREFIX};
} else {
prefixes = new String[] {PREPARE_PREFIX, ALT_PREPARE_PREFIX};
}
PrefixMethodInvocationUtil.invokePrefixMethod(invocation, prefixes);
}
catch (InvocationTargetException e) {
/*
* The invoked method threw an exception and reflection wrapped it
* in an InvocationTargetException.
* If possible re-throw the original exception so that normal
* exception handling will take place.
*/
Throwable cause = e.getCause();
if (cause instanceof Exception) {
throw (Exception) cause;
} else if(cause instanceof Error) {
throw (Error) cause;
} else {
/*
* The cause is not an Exception or Error (must be Throwable) so
* just re-throw the wrapped exception.
*/
throw e;
}
}
if (alwaysInvokePrepare) {
((Preparable) action).prepare();
}
}
return invocation.invoke();
}