在我的Web应用程序中,我使用strust2 url标记传递id等参数。例如,我使用链接删除实体,我使用param传递要删除的实体的id。我在我的网络应用程序中按照这个添加,编辑,删除实体。
在运行期间,有时候,我没有将params存储在我的action的bean属性中。当我看到生成的链接时,我会得到类似
的内容<a href='/projit1/p/discuss/viewDiscussion.action?d=11&amp;amp;projid=11&amp;disid=4'>
这些放大器适用于什么?为什么他们坐在动作调用之间(通过url标记动作链接)?当我在我的网络应用程序中来回移动时,我会在请求URL中获得10和20的放大器。这里有什么问题 ?请帮忙。
答案 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&projid=11&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"