【问题标题】:amp is included in url struts tagamp 包含在 url struts 标记中
【发布时间】:2010-03-11 03:37:57
【问题描述】:

在我的 web 应用程序中,我使用 strust2 url 标签来传递 id 等参数,例如,我使用链接删除实体,并使用 param 传递要删除的实体的 id。我在整个网络应用程序中都遵循这一点来添加、编辑、删除实体。

在运行时,有时,我没有将参数存储在我的操作的 bean 属性中。当我看到生成的链接时,我会得到类似

<a href='/projit1/p/discuss/viewDiscussion.action?d=11&amp;amp;amp;projid=11&amp;amp;disid=4'>

这些放大器是干什么用的?为什么他们坐在动作调用之间(通过 url 标签动作的链接进行)?当我在我的网络应用程序中来回遍历时,我在请求 URL 中获得了 10 和 20 的 amp。这里有什么问题 ?请帮忙。

【问题讨论】:

标签: java tags struts2


【解决方案1】:

在 HTML、XHTML 和 XML 中,某些字符被特殊处理。使用最多的特殊字符是小于 (

您的网址的问题在于多个放大器;这表明 href 已被多次编码。第一次 & 改为 &当时添加了另一个参数和它的 & 分隔符。然后对整个 URL 进行第二次编码,将第一个 & 更改为 &amp;第二个是 &。然后由于某种原因,URL 被第三次编码,导致第一次变为 &amp;amp;第二个是 &amp;。要删除多余的放大器,您需要确保 URL 仅针对 HTML 编码一次而不是多次。

生成的标签应如下所示:

<a href='/projit1/p/discuss/viewDiscussion.actiond=11&amp;projid=11&amp;disid=4'>

【讨论】:

    【解决方案2】:

    我发现了问题。希望对其他人有所帮助。

    我必须将 includeParams 设置为无。它将避免旧的请求参数

    【讨论】:

      【解决方案3】:

      将以下属性添加到 url 标签

      escapeAmp="false"
      

      【讨论】:

        【解决方案4】:

        我知道这有点老了,但我遇到了同样的问题并通过luckydev 解决了。这是我的代码示例:

        <s:url id="remoteurlGrid" action="certificationListJSON" includeParams="get">
             <s:param name="population" value="%{getPopulation()}" />
             <s:param name="selectedSalesRepID" value="%{getSelectedSalesRepID()}" />
        </s:url>
        

        我需要做的就是添加“includeParams="get"。奇怪的是这应该是默认设置,所以我不知道为什么它不起作用。

        这里是对 API 的引用:http://struts.apache.org/2.1.6/struts2-core/apidocs/org/apache/struts2/components/URL.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-26
          • 2018-05-18
          • 2023-03-23
          • 1970-01-01
          • 2012-03-01
          相关资源
          最近更新 更多