2

現時点では、次のコードを使用しています。

public void init() {
    question = questionBean.findQuestion(questionParamId);
}

これによって呼び出されます:

<f:metadata>
    <f:viewParam name="id" value="#{questionShowBackingBean.questionParamId}" />
    <f:event type="preRenderView" listener="#{questionShowBackingBean.init}" />
</f:metadata>

したがって、URL はhttp://www.mycompany.com/show.xhtml?id=8です。

今、私は PrettyFaces を使い始めまし<action>た。URL マッピング要素の要素を見ましたが、<action>#{questionShowBackingBean.init}</action>代わりに書くことができたのではないでしょうか?

もしそうなら、メタデータ要素を削除する必要がありますか、それとも将来PrettyFacesの使用から変更される可能性があるため、代わりにそれを使用する必要がありますか? action最後に、要素の呼び出しはどこで発生しますか? 私が今持っているリスナーの前に発生しますか?

4

1 に答える 1

2

<f:event><action>タグは非常に似ているように見えますが、決定に影響を与える可能性のある大きな違いがいくつかあります。

  1. <action>ナビゲーション文字列を返すことでナビゲーションを実行できます。
  2. <f:event>はネイティブ JSF であり、将来 URL 書き換えツールを切り替えたい場合に移植性を維持できます。
  3. <action><action phaseId="..." />属性を介してアクションを呼び出すフェーズを選択できます。<f:event>JSF アクション メソッドまたは INVOKE_APPLICATION フェーズでこの情報を使用している場合は、通常、RENDER_RESPONSE 中に常に同時に呼び出します。

デフォルトでは、<action>s は RESTORE_VIEW フェーズの後に呼び出されますが、前に述べたように、これは自分で制御できます。

<action>要素を必要とせずに機能し、ライフサイクル処理が発生する前にナビゲートできるため、通常は使用することを好み<f:viewParam>ます (物事をより安全に保ちます)。

于 2011-11-26T15:41:37.713 に答える