在 Xpage 中,我需要计算多个复选框控件的禁用属性。所以我为此构建了一个 javaBean 并将其注册为 managedBean。原则上,这就像一个魅力:computedField 控件的 value
属性使用 EL 绑定(bind)到 bean 的私有(private)变量之一:
value="#{myBean.myTestValue}"
正如预期的那样,它显示了正确的内容。
接下来,我再次使用 EL 将我的复选框的 disabled
属性绑定(bind)到一个在我的 bean 中计算的私有(private) boolean 变量:
disabled="#{myBean.isCheckBoxDisabled}"
不幸的是,这次抛出了 javax.faces.el.PropertyNotFoundException
。
作为解决方法,我创建了一个 getter 方法,然后我从复选框的禁用属性中调用它,这次是作为 JS 代码:
disabled="#{javascript:myBean.isCheckBoxDisabled()}
这按预期工作,已设置禁用属性。这对我来说基本上没问题,尽管我很想使用 EL 来做到这一点,因为这似乎是最佳实践。
问题是:为什么控件的 value
属性可以使用 bean 的私有(private)变量,而 disabled
属性不能?
最佳答案
它应该与
一起工作disabled="#{myBean.checkBoxDisabled}"
EL 将其“翻译”为
myBean.getCheckBoxDisabled()
myBean.isCheckBoxDisabled()
(如果是 boolean 值或 boolean 值属性)
对于 setter/getter 和
myBean.setCheckBoxDisabled(值)
对于二传手。
如果您想从当前包外的 EL、JavaScript 或 Java 类中访问私有(private)属性,您应该始终为私有(private)属性生成公共(public) getter 和 setter。
关于java - XPages:从 managedBean 读取私有(private)属性失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376945/