1

Pretty Facesが無限ループになり、ブラウザで終了するという問題が発生しました。Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

問題の正確な原因

ファイル構造

ここに画像の説明を入力してください

pretty-config.xmlフラグメント

<url-mapping id="login">
    <pattern value="/login" />
    <view-id value="/login/login.xhtml" />
</url-mapping>

<url-mapping id="register">
    <pattern value="/register" />
    <view-id value="/login/register.xhtml" />
</url-mapping>

説明

に移動localhost:8080/registerすると、私のWebページが表示されます。にナビゲーションすると、説明されているループが発生します。ナビゲーションにより、 <-末尾のスラッシュlocalhost:8080/loginにリダイレクトされることに注意してください。localhost:8080/login/

私の推測でlocalhost:8080/loginは、フォルダのリクエストですlogin。しかし、私はそれを修正する方法がわからないので、私の要求localhost:8080/loginはウェブページになります。

前もって感謝します。

4

2 に答える 2

5

私も過去にこの問題を抱えていました。問題はサーブレットコンテナです。のようなURLをリクエストしている場合/login、コンテナは、という名前のディレクトリがWebアプリにあるかどうかをチェックしますlogin/login/もしそうなら、コンテナはあなたがこのディレクトリに到達したいと思っているので、あなたをにリダイレクトします。末尾のスラッシュを削除する書き換えルールもある場合は、次のような動作が見られます。

これは奇妙なことですが、Tomcatユーザーリストの誰かが、この動作は仕様に従っていると書いています。

したがって、唯一の解決策は、マッピングでに変更/loginするか/login/、Webアプリでログインフォルダの名前を変更することです。

于 2012-10-29T15:54:20.797 に答える
3

私の唯一の推測は、リクエストが処理されるときに、最初にプリティフィルターがそれをFacesServletに転送するようにFacesServletマップされているということですが、xhtmlファイルがパスにあるため、転送はプリティフィルターによって無限に再度処理されます。*.xhtml

これを解決するには、ビューをWEB-INFフォルダー内に配置し、pretty.config.xml次のように配置します。

 <url-mapping id="login">
    <pattern value="/login/" />
    <view-id value="/WEB-INF/views/login.xhtml" />
 </url-mapping>

WEB-INFこのように、クライアントはフォルダ内のリソースを要求できるため、フィルタによってインターセプトされたパスはサーブレットと同じではありません。

于 2012-10-29T15:17:35.173 に答える