我在IceFaces 1.8.x(JSF 1.2)中开发了一个弹出对话框。
该对话框可重复使用(用于创建帐户和修改),并且具有immediate = true
的取消按钮(以避免验证)。此对话框在过去遇到了问题,在重新打开对话框时呈现旧值,但现在该问题已按照指示here(将submittedValue
设置为null等)修复。< /强>)。
我现在面临的问题是特定于有条件禁用的输入字段(<ice:inputText>
),现在会发生以下情况:
setSubmittedValue(null)
),此字段的submittedValue
将设置为null(以及其他字段)。这个问题可以通过在相关字段的setter方法中添加空检查来解决,但这不是项目所需的解决方案 - 因为有多个地方可能需要这些并且看起来不像就像一个非常直观的事情。
所以我需要明白:
答案 0 :(得分:2)
您必须使用rendered
属性来显示/隐藏对话框
<ice:panelPopup modal="true" rendered="#{bean.enabled}">
当重新打开对话框时,它会从前一个实例
中得到一些残余值解决方案(或解决方法)是使用<c:if>
而不是rendered
属性,这样当对话框关闭并在对话框打开时从头开始创建时,DOM会被完全销毁
<c:if test="#{bean.enabled}">
<ice:panelPopup modal="true">
...
</ice:panelPopup>
</c:if>
这样你甚至不需要修复就可以将submittedValue
设置为null