0

Eclipse Indigo と Tomcat 7.0.32 を使用して、 Eclipse ドキュメントに示されているように、JSF 2.0 アプリケーションを作成しました。

このアプリケーションには、次の 2 つのページがあります。

  1. login.xhtml
  2. ようこそ.xhtml

I amからlogin.xhtmlへのナビゲーションwelcome.xhtmlです。

そして、login.xhtmlを のウェルカム ページとして宣言しましたweb.xml

  <welcome-file-list>
    <welcome-file>login.xhtml</welcome-file>
  </welcome-file-list>

また、url-patternforFaces Servletを次のように定義しました。

  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>

今、私は2つの問題を抱えています:

  1. URLhttp://localhost:8080/LibraryInformationSystem/ にアクセスするとログイン ページが表示されますが、ログイン後、welcome.xhtml に移動すると、URL がhttp://localhost:8080/LibraryInformationSystem/login.xhtmlnotに変わりますhttp://localhost:8080/LibraryInformationSystem/welcome.xhtml。しかし、手動で参照するhttp://localhost:8080/LibraryInformationSystem/welcome.xhtmlと、同じことが表示されます。私の質問は、なぜ URL が変更されないのですか? デフォルトページを定義する正しい方法ですか? 他の 2 つの SO スレッドから情報を見つけました。最初のスレッドはhereで、2 番目のスレッドはhereです。
  2. 2 つ目の問題は、Eclipse からアプリケーションを実行していて、アプリケーションを内部ブラウ​​ザーで起動すると、ログイン ページが表示されますが、Eclipse から実行しているサーバーをシャットダウンし、バッチ ファイルの起動から Tomcat を実行すると、ログイン ページが表示されることです。 bin フォルダーに常駐し、アプリケーションを war ファイルとしてエクスポートし、webapps フォルダーにデプロイすると、ログイン ページが表示される場合があり、Firefox または Chrome から Tomcat の HTTP エラー - 404 ページが表示される場合があります。startup.bat を閉じて、webapps フォルダーから myapplication.war と myapplication フォルダーを削除すると、再度 startup.bat からサーバーを起動し、Eclipse から war を再度エクスポートすると、ログイン ページが表示されます。この場合、404 エラーは表示されません。 . なぜそれが起こっているのですか?

どんなポインタでも私にとって非常に役に立ちます。

4

1 に答える 1

1

ポイント 1) について、JSF は HTTP セマンティクスを壊します。GET を使用して のコンテンツを提供する必要がありますhttp://localhost:8080/LibraryInformationSystem/welcome.xhtmlが、JSF は POST を使用するため、URL は変更されません。URL を更新するためにa を実行できますが、Post-Redirect-GetJSF がデフォルトでどのように機能するかは異なります。

ポイント 2 については、同じ SO 質問で 2 つの質問を作成しないようにする必要があります。

于 2012-11-18T18:27:21.330 に答える