3

が切り替えられるたびにブール値フィールドを設定する必要がありp:fieldsetます。次のコードを試してみましたが、トグルで p:ajax リスナーが呼び出されますが、f:setPropertyActionListener によってフィールドが設定されることはありません。次のコードを試しました。

    <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:ajax2番目の方法で行われたように、単一の親に複数を接続するのは悪いですか?
4

1 に答える 1

9

は、 、、 などのインターフェイスを実装するコンポーネントでのみ実装<f:setPropertyActionListener>として機能します。はこのインターフェイスを実装しないため、は基本的に完全に無視されます。ActionListenerActionSourceUICommand<h:commandXxx><p:commandXxx><p:ajax><f:setPropertyActionListener>

回避策としては、具体的なビュースコープのBeanを使用するか、バッキングコンポーネントを使用してコンポジットでラップすることをお勧めしますが、そうすることができます。

于 2013-04-08T14:01:53.237 に答える