【问题标题】:Illegal Syntax for Set Operation for Primefaces Boolean CheckBox?Primefaces布尔复选框的集合操作的非法语法?
【发布时间】:2017-07-02 18:52:01
【问题描述】:

下面的 EL 表达式是否有效?

<p:selectBooleanCheckbox value="#{!bean.isCreateGroup}" id="checkBoxCreateSecurityGrpKey">

我得到的错误是

javax.el.PropertyNotWritableException:/pages/popup.xhtml @503,170 value="#{!bean.isCreateGroup}": Illegal Syntax for Set Operation

【问题讨论】:

    标签: jsf primefaces el


    【解决方案1】:

    value="#{!bean.isCreateGroup}" 表达式在这里无效,因为SelectBooleanCheckBox 的 value 属性必须是可以获取和设置值的javax.el.ValueExpression(左值表达式)。

    来自ValueExpression的链接Javadoc:

    并非所有右值表达式都可以用作左值表达式(例如“${1+1}”或“${firstName} ${lastName}”)

    来自表达式语言规范 2.1:

    左值的有效语法是右值有效语法的子集。在 特别是,左值只能由单个变量(例如 ${name})或 某些对象的属性解析,通过 .或 [] 运算符(例如 ${employee.name})。

    为了清楚起见,表达式应该代表一个 bean 属性:

    <p:selectBooleanCheckbox value="#{bean.aBooleanProperty}" ... />    
    

    在您的情况下,最简单的解决方案是在您的 bean 中使用另一个具有相反值的布尔变量,例如Boolean notCreateGroup 之类的东西(顺便说一句,为什么用 checkBoxCreateSecurityGrpKey 引用的组件的值应该与名为 createGroup 的变量相反?)。

    还有:

    Using conditional operator in h:inputText value and h:commandButton actionListener

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2012-03-18
      • 2017-02-21
      • 2014-06-23
      相关资源
      最近更新 更多