1

このf:eventリスナーを実行する前にjsfページからBeanプロパティを設定する方法:

    <f:event type="preRenderComponent" listener="bean.method}"/>

以下のコードを試しましたが、beanプロパティに値が設定されていません。

    <f:event type="preRenderComponent" listener="bean.method}">
        <f:setPropertyActionListener target="#{bean.howMany}" value="2"/>
    </f:event>

JSF2.1.6とPF3.3


編集

以下のコードに問題はありますか?(これは機能します!しかし、これに問題があるかどうかを確認したいだけです!?)

<f:event type="preRenderComponent" listener="#{bean.setHowMany(15)}"/> 
<f:event type="preRenderComponent" listener="#{bean.method}"/>
4

1 に答える 1

3

試す

<f:event type="preRenderComponent" listener="#{bean.method('2')}"/>

それでもうまくいかない場合は、試してみてください

<f:event type="preRenderComponent" listener="#{bean.method}">
    <f:attribute name="howMany" value="2" />
</f:event>

管理対象Beanに次を追加します

public void method(ComponentSystemEvent event) {
    String howMany = (String) event.getComponent().getAttributes().get("howMany");
}

本当に必要ない場合は、後続の2回の<f:event>呼び出しを避ける方がよいと思います。宣言の順序は実行の順序になることをどこかで見たと思いますが、それでもJSF実装によって異なる可能性があり、100になることはありません。 %あなたがそれを頼りにできることを確認してください...

したがって、この場合は1つだけを使用するINMOの方が適しています

<f:event type="preRenderComponent" listener="#{bean.method(15)}"/>
于 2012-06-17T05:37:28.697 に答える