我有一个在 IceFaces 1.8.x (JSF 1.2) 中开发的弹出对话框。
该对话框是可重复使用的(用于创建和修改帐户)并有一个取消按钮immediate = true
(以避免验证)。此对话框过去曾遇到过问题,在重新打开对话框时会呈现旧值,但现在已按照此处的指示修复了该问题(通过设置submittedValue
为 null 等)。
我现在面临的问题是特定于有条件禁用的输入字段 ( <ice:inputText>
),这就是发生的情况:
- 弹出窗口首先打开(例如用于创建帐户)并且此字段未被禁用。
- 用户然后取消此对话框,并且由于我们已经合并了上面提到的修复 (
setSubmittedValue(null)
),因此submittedValue
该字段的 设置为 null(以及其他字段)。 - 现在用户打开“修改帐户”对话框,在此字段中被禁用。在用户对表单进行任何更改之前,一切似乎都很好。
- 当用户更改表单中的某些字段(例如名称)时,会按预期对名称字段进行部分提交,但同时为该禁用字段提交空值。
可以通过在相关字段的 setter 方法中添加空检查来解决此问题,但这不是项目所需的解决方案 - 因为有多个地方可能需要这样做,而且看起来不是一个非常直观的事情。
所以我需要明白:
- 为什么首先调用此禁用字段的设置器?这也是一个空值。不会为任何其他启用的字段调用 setter。
- 更重要的是,有没有办法解决这个问题(除了在 setter 中添加空检查)?