我使用WildFly 8.0.2和primefaces 5.2,我有一个p:datatable
,其中一列有p:inputSwitch
,此p:inputSwitch
上的值是方法(返回true或false),因此它没有setter方法,我附加了p:ajax
来处理切换事件(开/关),但是当我更改值时它总是引发{ {1}}异常(导致值是一个方法......并且没有setter)。
这是我的代码:
javax.el.PropertyNotWritableException: Illegal Syntax for Set Operation
我尝试使用<p:column styleClass="status #{employee.haveSkill(skill) == true ? 'have' : 'dosntHave'}">
<div style="text-align: center;">
<p:inputSwitch value="#{employee.haveSkill(skill)}" onLabel="#{msgs.yes}" offLabel="#{msgs.no}">
<p:ajax listener="#{skillsController.addSkill(employee, skill)}" />
</p:inputSwitch>
</div>
</p:column>
,将方法的结果存储在变量中,然后将其分配给c:set
组件,但这对我没有用,{{1}总是设置为false(虽然单元格样式类的EL表达式工作正常),这是我尝试过的代码:
p:inputSwitch
那么有没有办法告诉jsf或el不要解雇&#34; set&#34;该组件的方法?并在ajax ??
上执行该监听器 更新
我也尝试使用p:inputSwitch
,但它也提升了<p:column styleClass="status #{employee.haveSkill(skill) == true ? 'have' : 'dosntHave'}">
<div style="text-align: center;">
<c:set var="have" value="#{employee.haveSkill(skill)}" scope="request" />
<p:inputSwitch value="#{have}" onLabel="#{msgs.yes}" offLabel="#{msgs.no}">
<p:ajax listener="#{skillsController.addSkill(employee, skill)}" >
</p:ajax>
</p:inputSwitch>
</div>
</p:column>
:
ui:param