5

このSO の質問/回答に出くわしたとき、Web アプリで明示的なページ ナビゲーション ルールを使用することを検討していました。

...新しい「暗黙のナビゲーション」機能のおかげで、ナビゲーション規則は JSF 2.0 以降廃止されました。

しかし、私はCoreServlets JSF 2.0 チュートリアルのほとんどを読んでおり、明示的なページ ナビゲーションに特化したセクションがあり、それについて好意的に語っています。これは上記の推奨事項に反するか、何かを誤解しています。

古い方法で新しい Web アプリを作成したくありません。誰でも光を当てることができますか?

4

3 に答える 3

13

これはやや主観的ですが、次のように要約されます。

  1. XML のナビゲーション ルールはメンテナンス地獄です。

  2. ナビゲーション ルールを使用すると、問題の Web アプリケーションが「1 つの URL の背後にある」問題に悩まされていることが示唆されます。これにより、ユーザー エクスペリエンスが低下します (ページはブックマーク可能ではありません)。

  3. ナビゲーション ルールを使用すると、問題の Web アプリケーションがページ間のナビゲーションに POST を使用していることが示唆されます。これは、ユーザー エクスペリエンスが悪い (ページがブックマーク可能でない) だけでなく、SEO も悪い (ボットは POST をインデックスに登録しないため、POST でナビゲートされる)ページは公開検索エンジンでは到達できません)。

以下も参照してください。

于 2013-08-04T13:04:30.720 に答える
7

純粋に技術的な観点から見ると、ナビゲーション ルールは時代遅れではありません。つまり、仕様も API も、ナビゲーション ルールを時代遅れ、非推奨、または削除候補としてマークしていないからです。

実際、再利用可能なモジュールの Faces Flow 機能により、JSF 2.2 で多少の復活を遂げています。

これは実際に言えば、確かに Faces Flow 機能が使用されていない場合、XML でのナビゲーション ルールの使用はあまり見たことがありません。彼らは理論的にはメンテナンスを容易にします (IIRC は当初の設計目標の 1 つでした) が、実際には BalusC が言及しているように、メンテナンス地獄を引き起こすだけです。

しかし、BalusC も述べたように、それは主観的なものです。一部の人々は、マネージド Bean、インジェクション (ワイヤリング)、エンティティ マッピング、およびアノテーションを使用する代わりに XML で主に定義することを依然として好みます (XML は可能なオーバーライドまたはグローバルなもののみを使用します)。

私の意見では、ナビゲーション ルールは主に、HTTP からあまりにも多くを抽象化し、より高レベルのデスクトップのようなプログラミング モデルを提示しようとする JSF の最初の試みを反映しています。そのモデルでは、クエリ パラメーターを含む URL にリダイレクトするなど、実際には場所がありませんでした。しばらくの間 (JSF 2.0 以降)、JSF はより中間的なモデルに移行しており、プレーンな GET 要求と PRG (Post-Redirect-GET) がはるかに受け入れられています。この新しいモデルに従うと、ナビゲーション ルールには場所がない、つまり事実上時代遅れになっていると言えます。

于 2013-08-04T13:59:36.573 に答える
0

どちらでも使用できます。

明示的とは、xml コードで次のことを意味します。

  1. 特に条件が複雑な場合は、より多くのオーバーヘッドが発生します (アクション メソッドの結果を期待値と一致させる必要があります)。

    1b) タイプミスがある場合、暗黙のナビゲーションはおそらく 404 につながります。明示的なナビゲーションは間違ったページにつながります。

  2. ツールを使用して GUI でルールを描画し、後でfaces-config.xml.

  3. 後でルールを変更すると、XML が変更されます (再コンパイルする必要はありません)。URL/JSF ページ名を変更した場合、再コンパイルする必要はありません。

どちらを使用するかは好みの問題だと思いますが、暗黙のナビゲーションを使用することには非常に満足しています。

于 2013-08-03T22:35:36.910 に答える