amp包含在url struts标记中

时间:2010-03-11 03:37:57

标签: java tags struts2

在我的Web应用程序中,我使用strust2 url标记传递id等参数。例如,我使用链接删除实体,我使用param传递要删除的实体的id。我在我的网络应用程序中按照这个添加,编辑,删除实体。

在运行期间,有时候,我没有将params存储在我的action的bean属性中。当我看到生成的链接时,我会得到类似

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

这些放大器适用于什么?为什么他们坐在动作调用之间(通过url标记动作链接)?当我在我的网络应用程序中来回移动时,我会在请求URL中获得10和20的放大器。这里有什么问题 ?请帮忙。

4 个答案:

答案 0 :(得分:1)

我发现了这个问题。希望它能帮助别人。

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

答案 1 :(得分:1)

在HTML,XHTML和XML中,特定处理某些字符。使用的特殊字符少于(&lt;)和&符号(&amp;)。 &lt;仅在标签的开头有效,而&amp;用于编码字符实体(特殊字符,无法键入的字符等)。因为&amp;是特殊的,不能作为属性值的一部分出现,它被编码为&amp; amp;虽然如果你不知道为什么它可能看起来很奇怪,你问题中的href值几乎是正确的。在同一庄园&lt;应编码为&amp; lt;确保正确的浏览器行为。不编码这些字符可能有效,但不保证可以正常工作。

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

您的结果标记应如下所示:

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

答案 2 :(得分:0)

我知道这有点旧,但我遇到了同样的问题并且由于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

答案 3 :(得分:0)

将以下属性添加到网址标记

escapeAmp="false"