8

JSF2.0"?faces-redirect=true"のタグのactionプロパティにinを追加することの背後にあるセマンティクスを理解したいと思います。<h:commandlink>それがあるかどうかにかかわらず、アプリケーションは実際にアクションで指定されたターゲットページに移動します。したがって、一見したところ、唯一の効果は表面的なものであるように見えます。つまり、ユーザーが新しいページに移動したことをユーザーにフィードバックすることです(ユーザーがブラウザーのアクセスURLを見ている場合)。しかし、それが非常に無害で副作用がない場合、なぜそれがデフォルトの動作ではないのかわかりません。それはJSF2.0のポストベースのメカニズムに関係しているのではないかと思います。JSFアプリケーションを閲覧しているときに、ブラウザに表示されるURL(?faces-redirect=true使用されていない場合)が「前の」「ページ」のURLであることに気付きました。

メタNB。私はファイアウォールの背後にいて、「SOには別のドメインからの外部JavaScriptが必要です」という問題に悩まされているため、フォーマットがないことをお詫びします。また、別のドメインからアクセスできるようになったときに、数時間以内に回答に関するフィードバックを提供します。

4

1 に答える 1

12

ページ間ナビゲーションは、POSTを使用して実行しないでください。またはの代わりに、通常の<h:link>またはこれを使用する必要があります。<h:button><h:commandLink><h:commandButton>

だから代わりに

<h:commandLink value="Next page" action=nextpage.xhtml?faces-redirect=true" />

あなたは実際に使用する必要があります

<h:link value="Next page" outcome="nextpage.xhtml" />

これには、WebサイトがSEOに対応しているという大きな利点があります。つまり、Searchbotsはフォームのインデックスを作成しません。

ユーザー入力を含むフォームを送信する必要がある場合に<h:commandLink> のみ使用してください。ただし、必要に応じてレンダリング/インクルードする場合は、結果が同じページに表示されることがよくあります。絶対に別のページ(ログイン/ログアウトなど)に移動する必要がある送信が成功した場合にのみ、実際にリダイレクトを送信する必要があります。これは、いわゆるPost-Redirect-Getパターンです。

も参照してください

于 2012-06-28T13:02:48.407 に答える