3

p:fieldset每当切换时,我都需要设置一个布尔字段。我尝试了以下代码,但 f:setPropertyActionListener 从未设置该字段,尽管在切换时调用了 p:ajax 侦听器。我尝试了以下代码。

    <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>

我想问一下:

  1. 为什么第一种方法不起作用?
  2. 以第二种方式将多个附加p:ajax到单亲是否不好?
4

1 回答 1

9

<f:setPropertyActionListener>作品ActionListener仅作为实现ActionSource接口的组件上的实现,例如UICommandie<h:commandXxx><p:commandXxx><p:ajax>不实现此接口,因此<f:setPropertyActionListener>基本上完全忽略了 。

至于您的解决方法,您可以这样做,尽管我宁愿只使用具体的视图范围 bean 或将其包装在具有支持组件的复合材料中。

于 2013-04-08T14:01:53.237 回答