一尘不染

在带有RequestDispatcher的正向URL中使用哈希符号

tomcat

我正在尝试将请求转发到另一个包含哈希符号(’#’)的URL:

request.getRequestDispatcher("/some/path.jsp#somehash").forward(request, response);

但是,Tomcat告诉我“请求的资源不可用”。如果我从网址中删除了哈希,一切工作正常。是否不允许使用散列,或者我不正确对待它们吗?


阅读 270

收藏
2020-06-16

共1个答案

一尘不染

#符号是浏览器,而不是服务器。当您#在浏览器中输入带有的URL时,浏览器不会将该部分发送到服务器。它发送不带URL的URL,然后在返回页面时跳转到命名锚。

当您要求容器为您获取该URL时,它#与任何其他URL都不会区别对待-
它没有特殊含义,因此它将查找名为的JSP页面/some/path.jsp#somehash,这当然是不存在的。

您需要以某种方式在客户端上保留跳转至锚定逻辑。也许您可以在结果页面上放置一些javascript以滚动到文档中的该点。

2020-06-16