所以这里有2个请求:
设置<welcome-file>index.xhtml</welcome-file>
后,服务器将请求1作为2处理。
但是,在这两种情况下,request.getRequestURI()
都会返回完整的URI:someUrl/index.xhtml
。
根据documentation它不应该,但在大多数情况下,这是我们想要的,所以看起来很好。
我在JBoss Wildfly(Undertow webservice)下使用JSF,我不知道哪个负责。
我不一定想改变它的工作方式,但我正在寻找一种获取最终用户在浏览器地址栏中看到的原始URI的方法,因此在1的情况下没有index.xhtml
部分。
更准确地说,我必须获得与JavaScript中document.location.href
返回的完全相同的网址。
答案 0 :(得分: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();
}
// ...