首页 > 解决方案 > 在 IceFaces 中是否存在第一次读取支持 bean 中的属性但第二次在同一页面上读取的情况?

问题描述

我是 IceFaces 的新手,目前正在处理 1.8 版(组织不允许升级到任何新版本)。在其中一个页面上,支持 bean 的属性值第一次被读取良好,但有时在同一页面中第二次读取失败。下面的代码将更好地解释这一点。

有一个称为 MyBean 的支持 bean。MyBean 有一个属性 Action 动作。Action 有一个属性 Map validations。验证有一个属性 boolean isValid

在我的 xhtml 文件中,表达式 #{mybean.action.validations['QRY'].isValid} 第一次被正确读取,但之后不正确(仅有时发生)

这是在带有 IceFaces 1.8 的 JBOSS 7 上运行的

所有类都有正确的 getter 和 setter。

public class MyBean {
   ...
   private Action action;
   ...
}

public class Action {
   ...
   private Map<String, Validation> validations;
   ...
}

public class Validation {
   ...
   private boolean isValid;
   ...
}


<ice:selectBooleanCheckbox
   value="#{mybean.action.validations['QRY'].isValid}"
   partialSubmit="true"
   valueChangeListener="#{mybean.action.validations['QRY'].changeListener}">
</ice:selectBooleanCheckbox>
<h:outputText value="Validated"
   styleClass="#{mybean.action.validations['QRY'].isValid ? 'green' : 'red'}" />

在上面的代码片段中,有一个复选框和旁边的文本“已验证”。样式“绿色”的字体颜色为绿色,“红色”的字体颜色为红色。

问题:有时当用户访问此页面时,复选框被选中(从 DB 中正确读取值,因此复选框显示为选中状态),但文本显示为红色而不是绿色。为什么以及如何发生这种情况?有时当用户离开此页面并返回复选框未选中且文本为红色时。对我来说,似乎第一次正确读取了该属性,但随后的读取要么失败,要么状态信息暂时丢失......

标签: jsficefaces-1.8

解决方案


推荐阅读