Java JSR168 portlet请求在#符号后剪切参数值

Java JSR168 portlet请求在#符号后剪切参数值,java,jsp,parameters,jsr168,Java,Jsp,Parameters,Jsr168,操作链接的一个参数如下所示: itemUrl=feedLink.html#xtor=RSS-3208 当我在processAction()的后端执行下一个代码时: ,我得到下一个值:feedLink.html e、 g.请求在#符号后剪切itemUrl值 jsp文件中的escapeXml=“true”没有帮助。您必须对参数名称和值进行URI编码-您的链接应该是itemUrl=feedLink.html%23xtor=RSS-3208URL中的#之后的任何内容都指定浏览器应显示的页面位置;它不是U

操作链接的一个参数如下所示:

itemUrl=feedLink.html#xtor=RSS-3208

当我在processAction()的后端执行下一个代码时:

,我得到下一个值:feedLink.html

e、 g.请求在#符号后剪切itemUrl值


jsp文件中的escapeXml=“true”没有帮助。

您必须对参数名称和值进行URI编码-您的链接应该是itemUrl=feedLink.html%23xtor=RSS-3208

URL中的#之后的任何内容都指定浏览器应显示的页面位置;它不是URL本身的一部分。因此,如果您希望URL中有一个实际的#,则需要对其进行转义(如果解析器实际上是兼容的)


理论上,您可以手动解析发送给您的整个URL,但更好的解决方案是让页面的调用者首先向您发送正确的URL(好的,一个表示他们想要的URL,因为所讨论的URL本身是有效的)。

我将此链接作为外部提要链接。我可以影响它的编码吗?在jsp中,它看起来是这样的:我的意思是sub.htmlink值是外部提要url。您可能认为JSTL有一个内置函数来实现这一点,但它没有。谷歌搜索结果显示,这可能对你有用,也可能对你没用:古斯塔夫,谢谢你的好提示。起初,我试着在前端这样做,比如:但这个解决方案不是很优雅,所以问题是在后端解决的,使用URL和URLEncoder类。所以现在我在请求中得到的参数不会剪切#符号。是的,你是对的,手动解析并不是那么可爱。谢谢你的帮助。我已经在后端用URLEncoder完成了。
String itemUrl = (String) request.getParameter("itemUrl");