值的下面EL表达式是否有效?
<p:selectBooleanCheckbox value="#{!bean.isCreateGroup}" id="checkBoxCreateSecurityGrpKey">
我收到错误
javax.el.PropertyNotWritableException:/pages/popup.xhtml @503,170 value="#{!bean.isCreateGroup}": Illegal Syntax for Set Operation
答案 0 :(得分:3)
表达式value="#{!bean.isCreateGroup}"
在此处无效,因为SelectBooleanCheckBox的value属性必须是javax.el.ValueExpression,它可以获取并设置一个值(l值表达式)。
来自ValueExpression的链接Javadoc:
并非所有的r值表达式都可以用作l值表达式(例如&#34; $ {1 + 1}&#34;或&#34; $ {firstName} $ {lastName}&#34; )
从表达语言规范2.1:
左值的有效语法是右值的有效语法的子集。在 特别是,左值只能由单个变量(例如$ {name})或a组成 某些对象的属性解析,通过。或[]运算符(例如 $ {} employee.name)。
为了清楚起见,表达式应该代表一个bean属性:
<p:selectBooleanCheckbox value="#{bean.aBooleanProperty}" ... />
在您的情况下,最简单的解决方案是在bean中使用具有相反值的另一个布尔变量,例如像Boolean notCreateGroup
之类的东西(顺便说一下,为什么用checkBoxCreateSecurityGrpKey
引用的组件应该具有与名为createGroup
的变量相反的值?)。
Se还:
Using conditional operator in h:inputText value and h:commandButton actionListener