Lot*_*ler 1 java managed-bean xpages xpages-ssjs
在Xpage中,我需要计算多个checkBox控件的禁用属性.所以我为此构建了一个javaBean并将其注册为managedBean.原则上它就像一个魅力:一个computedField控件的value属性使用EL绑定到bean的一个私有变量:
value="#{myBean.myTestValue}"
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,它显示了正确的内容.
接下来,我将checkBox的disabled属性绑定到我的bean中计算的私有布尔变量,再次使用EL:
disabled="#{myBean.isCheckBoxDisabled}"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这次javax.faces.el.PropertyNotFoundException抛出了.
作为一种解决方法,我创建了一个getter方法,然后我从checkBox的disabled属性调用,这次作为JS代码:
disabled="#{javascript:myBean.isCheckBoxDisabled()}
Run Code Online (Sandbox Code Playgroud)
这是按预期工作,已设置disabled属性.这对我来说基本没问题虽然我本来喜欢用EL做这件事,因为这似乎是最佳实践.
问题是:为什么控件的value属性可以使用bean的私有变量而disabled属性不能?
它应该合作
disabled="#{myBean.checkBoxDisabled}"
Run Code Online (Sandbox Code Playgroud)
对于getter和
setter,EL将其"转换"为
myBean.getCheckBoxDisabled()
myBean.isCheckBoxDisabled()(如果是boolean或Boolean属性).
myBean.setCheckBoxDisabled(value)
如果要从当前包之外的EL,JavaScript或Java类访问那些属性,则应始终为私有属性生成公共getter和setter.