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
/App
URLから省略できるように。