1

ということで、リクエストは以下の2つです。

  1. http://example.com/someUrl/
  2. http://example.com/someUrl/index.xhtml (xhtml 拡張子は単なる例ではありません)

が設定されている場合<welcome-file>index.xhtml</welcome-file>、リクエスト 1 はサーバーによって 2 として処理されます。

ただし、どちらの場合も、request.getRequestURI()は完全な URI を返します: someUrl/index.xhtml.

ドキュメントによると、そうすべきではありませんが、ほとんどの場合、それは私たちが望んでいるものなので、問題ないようです。

JBoss Wildfly (Undertow webservice) の下で JSF を使用していますが、どちらが責任を負っているのかわかりません。

必ずしもその仕組みを変更したいわけではありませんが、エンドユーザーがブラウザーのアドレスバーに表示される元の URI を取得する方法を探しているため、index.xhtml1 の場合の部分はありません。

document.location.hrefより正確に言うと、JavaScript で返されるのとまったく同じ URL を取得する必要があります。

4

1 に答える 1

3

ウェルカム ファイルは、によって実行されたサーバーのカバーの下にある転送によって表示されましたRequestDispatcher#forward()RequestDispatcher#FORWARD_REQUEST_URIその場合、元のリクエスト URI は、 で識別されるキーを持つリクエスト属性として利用できますjavax.servlet.forward.request_uri

したがって、これは次のようにする必要があります。

String originalURI = request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);

if (originalURI == null) {
    originalURI = request.getRequestURI();
}

// ...
于 2013-10-04T12:53:05.570 に答える