Appアプリケーションをデフォルトアプリケーションとして設定するとHttpServletRequest.getContextPath()、コンテキスト パスのない URL から呼び出したときに、コンテキスト パスの値が空になります。
ブラウザバーで次の URL を使用してサイトをリクエストしています (いいえ/App!):/foo/bar.xhtml
次の値になります。
HttpServletRequest.getContextPath()= ""
HttpServletRequest.getServletPath()= "/foo/bar.xhtml"
HttpServletRequest.getRequestURI()= "/App/foo/bar.xhtml"
request /App-uri を取得するときに削除しないでください。
uri から context-path を削除するための次のコード行 (多くの質問で使用されます) は機能しなくなります。
request.getRequestURI().substring(request.getContextPath().length());
または、これを安全に置き換える必要があります:?
request.getContextPath() + request.getServletPath()
Glassfish 3.1.2 で mojarra 2.1.23 を使用する
Glassfish 設定:
アプリケーションApp- コンテキスト ルート:/App
仮想サーバー - デフォルトの Web モジュール:App
/AppURLから省略できるように。