Struts无法“刷新”禁用字段的值

时间:2014-04-11 09:34:38

标签: jsp java-ee struts struts-1 struts-validation

我有Struts的问题。流程是这样的:

  • 我提交了一个有一些价值的字段,但由于某些原因,验证失败了。没关系。
  • 之后,我更改页面上的一些内容,该字段将被禁用。
  • 下次提交时,我希望将字段值更新为null,因为它已被禁用。 问题是该字段仍保留第一次提交的值。

知道如何解决这个问题?我正在使用Struts 1.

1 个答案:

答案 0 :(得分:3)

您可能有一个会话范围的表单bean,它保留请求之间的值。当您提交新数据时,表单bean会从请求内的字段(带有请求参数的数据绑定)中更新它的值。

但禁用字段和复选框存在问题。当您提交表单时,禁用字段(就像未选中的复选框一样)不会在请求中发送。当请求到达时,请求中不存在该字段(因为它被禁用),并且Struts不对其进行绑定,因此它保留了以前具有的任何值。

有两种方法可以解决这个问题:

  • 使用请求范围的表单bean。这不会在请求之间保留,而是在每次提交时重新创建。如果您有一个向导类型的流程,并且您确实需要在请求之间保持会话中的数据,则可能无法实现。
  • 使用ActionForm.reset()方法将已禁用字段的值重置为null 。如果在提交时它没有出现在请求中,它将保持为null,如果它存在则会在Struts执行数据绑定时更新。