我正在尝试将请求转发到另一个包含哈希符号(’#’)的URL:
request.getRequestDispatcher("/some/path.jsp#somehash").forward(request, response);
但是,Tomcat告诉我“请求的资源不可用”。如果我从网址中删除了哈希,一切工作正常。是否不允许使用散列,或者我不正确对待它们吗?
该#符号是浏览器,而不是服务器。当您#在浏览器中输入带有的URL时,浏览器不会将该部分发送到服务器。它发送不带URL的URL,然后在返回页面时跳转到命名锚。
#
当您要求容器为您获取该URL时,它#与任何其他URL都不会区别对待- 它没有特殊含义,因此它将查找名为的JSP页面/some/path.jsp#somehash,这当然是不存在的。
/some/path.jsp#somehash
您需要以某种方式在客户端上保留跳转至锚定逻辑。也许您可以在结果页面上放置一些javascript以滚动到文档中的该点。