java - XPages:从 managedBean 读取私有(private)属性失败

标签 java xpages managed-bean xpages-ssjs

在 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/

相关文章:

java - GUICE:根据范围注入(inject)值

java - 用于持续测试的代码结构

xpages 根据组合框值隐藏/显示字段

css - 使用 Boostrap4XPages 的 Xpages 数据 View 图标列

JSF 消息持久化

java - System.getenv ("computername") 截断返回值

java - 如何缩放给定的坐标以在窗口中正确显示它们?

javascript - 如何将 html 文件加载到 XPages 中的 Dojo 对话框中

java - 为什么我需要在此处的 Managed Bean 中显式创建 ArrayList 的实例?

java - JSF 内部变量持久性