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()。在这种情况下,原始请求 URI 可用作请求属性,其键由 标识RequestDispatcher#FORWARD_REQUEST_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 回答