每当切换p:fieldset
时,我都需要设置一个布尔字段。我尝试了下面的代码,但该字段永远不会被f:setPropertyActionListener设置,尽管p:ajax listener在切换时被调用。我尝试了以下代码。
<p:fieldset legend="(Optional) Link.." toggleable="true">
<p:ajax event="toggle" listener="..">
<f:setPropertyActionListener target="#{viewScope.rendrUsrProjctsList}" value="#{true}"/>
</p:ajax>
</p:fieldset>
但是当我尝试修改下面的代码时,字段成功设置:
<p:fieldset legend="(Optional) Link.." toggleable="true">
<p:ajax event="toggle" listener="#{view.viewMap.put('rendrUsrProjctsList', true)}" />
<p:ajax event="toggle" listener=".."/>
</p:ajax>
</p:fieldset>
我想问:
p:ajax
是不是很糟糕
如第二种方式完成的单亲?答案 0 :(得分:9)
<f:setPropertyActionListener>
仅适用于实施ActionListener
界面的组件ActionSource
实施,例如UICommand
,即<h:commandXxx>
,<p:commandXxx>
等<p:ajax>
没有实现此接口,因此<f:setPropertyActionListener>
基本上完全被忽略。
至于你的解决方法,你可以这样做,虽然我宁愿只使用一个具体的视图范围的bean或将它包装在一个带有支持组件的复合中。