1

フローを定義しました:

<flow-definition id="locking">
    <view id="locking">
        <vdl-document>/views/locking/locking.xhtml</vdl-document>
    </view>
    <view id="summary">
        <vdl-document>/views/locking/locking-summary.xhtml</vdl-document>
    </view>
    <inbound-parameter>
        <name>targetId</name>
        <value>#{lockingBean.targetId}</value>
    </inbound-parameter>
    <flow-return id="exit">
        <from-outcome>#{lockingBean.getExitNode()}</from-outcome>
    </flow-return>
    <initializer>#{lockingBean.initializeBean()}</initializer>
    <finalizer>#{lockingBean.finalizeBean()}</finalizer>

</flow-definition>

ご覧のとおり、受信パラメーターがあります<initialize>。タグで渡されたメソッドで適切な初期化が必要です。問題は、初期化メソッド中にその値にアクセスすることlockingBean.initializeBean()です。実行中のパラメーターtargetIdは null です。ビューではその値をテキストとして配置しているため、正しく渡されます。つまり、渡されたメソッド<initialize>が実行され、その後、受信パラメーターが Bean に渡されます。私の意見では、この順序は正しくありません。

この順序を変更することは可能ですか、それともきれいな方法はありますか?

この時点では、初期化メソッドで何もしていません。すべての初期化は一時的に別のメソッドに移動され、ビュー ファイルから呼び出され、パネル グループにレンダラーが設定されます。それはすべてうまくいきますが、この解決策は正しいとは言えません。

4

1 に答える 1

0

この動作は、実際には Mojarra のバグとして受け入れられています。

https://java.net/jira/browse/JAVASERVERFACES-3475

MyFaces 2.2.7 でも同じ問題の動作が発生することを確認できます。

于 2015-03-11T18:26:56.133 に答える