【问题标题】:JSR168 portlet request cuts param value after # symbolJSR168 portlet 请求在 # 符号之后削减参数值
【发布时间】:2009-09-21 14:02:27
【问题描述】:

动作链接的参数之一如下:

itemUrl=feedLink.html#xtor=RSS-3208

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

String itemUrl = (String) request.getParameter("itemUrl");

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

例如请求在 # 符号后削减 itemUrl 值

.jsp 文件中的

escapeXml="true" 没有帮助。

【问题讨论】:

    标签: java jsp parameters jsr168


    【解决方案1】:

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

    【讨论】:

    • 这个链接我有作为外部提要链接。我可以影响它的编码吗?
    • 在 jsp 中看起来像: 我的意思是 sub.htmlLink 值是外部提要 url。
    • 你会认为 JSTL 有一个内置函数,但它没有。谷歌搜索出现了这个,这对你可能有用也可能没用:marc.info/?l=taglibs-user&m=114127478601259&w=2
    • gustafc,谢谢你的好提示。最初,我尝试在前端执行此操作,例如: 但是这个解决方案不是很优雅,所以问题在后端得到了解决,使用 URL 和 URLEncoder 类。所以现在我在请求中得到参数,不会剪切 # 符号。
    【解决方案2】:

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

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

    【讨论】:

    • 是的,你说得对,手动解析不是那么可爱。感谢您的帮助。我已经在后端使用 URLEncoder 完成了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多