2009-07-23 9 views
0

私は他の誰かのWebベースのアプリケーションでUATを実行しています。システムは数十のフォームと数百の独立した入力フィールドでかなり大きくなります。全体として、それはうまく構築され使用可能に見えます。奇妙なウェブサイトのナビゲーションメカニズム

私は非常に奇妙なことに気づきました。私がクリックするすべてのリンクは、私がすでに行っているページへのPOSTリクエスト(必要なページの詳細を含む)を実際に実行します。そのレスポンスは、必要なページへのHTTPリダイレクトです。データが変更されたページでこのようなことを理解できます。これにより、ユーザーが明示的に強制することなくデータを保存することができます。ただし、この動作はユーザー入力がないページでも使用されます。

なぜこれが行われますか?それはシステムのいくつかの主要な減速を模倣しているようです。

このシステムは、役立つ場合は、JSFを使用して書かれています。

答えて

2

私は、JSFを使って広範囲に作業した開発者のふりをするつもりはありません。しかし、私は他の技術で多くのWebアプリケーションを作成しています。

一般に、余分なデータを送信するPOST要求を使用するナビゲーションでは、データの負荷が増加し、速度が少し低下する可能性があります。一般に、GET要求を実行するためのナビゲーションのベストプラクティスとみなされます。 POST要求は、一般に、補助データが必要なアクションが実行されている状況で保存されます。

ここでPOSTを実行して応答でリダイレクトを受信すると、それは異常であり、1つではなく2つのネットワーク要求が発生すると速度が低下します。私は、「私は再訂正されているページへのリンクを作るだけではないのですか?」と尋ねるでしょう。私が推測できる唯一の答えは、CookieやURLのセッションパラメータを使用しないカスタムセッション管理です。

それ以上の理由があるかもしれませんが、そのタイプのデザインはかなり不必要で正直なところに見えますが、その理由が何であれ、システムを実装するより良い方法があると確信しています。

+0

ありがとう、私はほとんど同じことを考えていた - 私は唯一ではないことを知って良い! – jwoolard

0

JSFページで<h:commandButton>または<h:commandLink>を使用すると、HTTP POSTが実行されます。決してGETしないでください。

GETが必要な場合は、<h:outputLink>を使用する必要がありますが、開発者はナビゲーションの前にアクションを呼び出す機会があるため、前者の2つのタグを使用することがよくあります。いくつかのページを開く前に、開発者はバッキングBeanのメソッドを実行して、その変数を設定/初期化することが必要な場合があります。だから、WebアプリケーションがPOSTを実行している理由があるかもしれません。

たとえばナビゲーションがメニューの場合は、<h:outputLink>を使用するか、Faceletsと通常のアンカータグを使用するように変更することを検討してください。