Java 重定向url中的查询字符串和参数映射为空

Java 重定向url中的查询字符串和参数映射为空,java,servlets,request,httprequest,Java,Servlets,Request,Httprequest,我正在为NexusOSS编写一个插件,我正在做一个响应。sendRedirect,如下所示 String redirectUrl = url + "#nexus-search;gav" + "~net.collab.builds~teamforge~~~~" + "?" + req.getQueryString(); response.sendRedirect(response.encodeRedirectURL(redirectUrl)); 形成的重定向url如下所示

我正在为NexusOSS编写一个插件,我正在做一个
响应。sendRedirect
,如下所示

String redirectUrl = url + "#nexus-search;gav"
    + "~net.collab.builds~teamforge~~~~"
    + "?" + req.getQueryString();   

response.sendRedirect(response.encodeRedirectURL(redirectUrl));
形成的重定向url如下所示

http://domain/nexus/index.html#nexus-search;gav~net.collab.builds~teamforge~~~~?sfId=prpl1106&sfLoginToken=A237421CF755183D177F5C020752040F&isLoggedIn=true
我在这里做的是附加旧请求对象中存在的查询字符串,并附加到新url并重定向到它

但我无法理解的是,我认为我在
redirecturl
当点击新的重定向url时,我没有得到查询字符串。 我设置了断点,发现在重定向url完成后,当它被处理时,查询字符串为空

以下是疑问:

1) 我做错了什么使查询字符串消失了

为了查看重定向是否正常进行,我执行了
request.getCookie
,发现cookie与旧请求中的cookie一样存在。那么我错在哪里呢?新url的查询字符串到哪里去了

2) 重定向的url也将具有旧请求对象中的
parametramp
。目前,重定向url中的
parametramp
也为空。我是否应该显式地从旧请求对象获取数据,并在重定向期间将其放入响应中。如何使旧请求对象中的参数映射也在重定向过程中发送

我的调试更新:

当我使用nexus访问url时,好像发生了奇怪的事情

我已经将它作为nexus oss中的一个登录到jira中。

Ya找到了解决方案

问题在于查询字符串的附加位置。在代码中,我将查询字符串附加在片段后面(在#符号后面的部分)

因此,这意味着在生成请求对象时不会考虑片段。事实上,他们被抛弃了

因此,解决方案是在正确的位置追加查询字符串。准确地说,将其附加到片段之前。

String redirectUrl = url + "?" + req.getQueryString(); + "#nexus-search;gav" + "~net.collab.builds~teamforge~~~~" ;
这就解决了我的问题。 希望它对其他犯同样错误的人有用。 谢谢