2

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

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

知道这应该如何解决吗?我正在使用 Struts 1。

4

1 回答 1

3

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

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

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

  • 使用请求范围的表单 bean。这不会在请求之间保持不变,而是在每次提交时重新创建。如果您有向导类型的流程并且您确实需要在请求之间保持会话中的数据,则可能无法实现。
  • 使用ActionForm.reset()方法将禁用字段的值重置为 null。如果在您提交时它不存在于请求中,它保持为空,如果它存在,则在 Struts 进行数据绑定时更新它。
于 2014-05-04T15:06:44.103 回答