f:setPropertyActionListener不设置值,但触发操作

Raj*_*pta 3 jsf primefaces

每当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>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试修改下面的代码时,字段成功设置:

    <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>
Run Code Online (Sandbox Code Playgroud)

我想问一下:

  1. 为什么第一种方式不起作用?
  2. p:ajax如第二种方式那样将单个父母多重附加到单亲是不是很糟糕?

Bal*_*usC 9

<f:setPropertyActionListener>作品是一个ActionListener只在执行部件执行ActionSource诸如接口,UICommand<h:commandXxx>,<p:commandXxx><p:ajax>不实现此接口,因此<f:setPropertyActionListener>基本上是完全忽略.

至于你的解决方法,你可以这样做,虽然我宁愿只使用具体的视图范围bean或将其包装在带有支持组件的复合中.