2010-03-11 75 views
3

在我的web应用程序中,我使用strust2 url标记来传递参数,如id等,例如,我使用链接来删除实体,并使用param传递实体的id被删除。我通过我的网络应用程序来追加,编辑,删除一个实体。amp包含在url struts标记

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

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

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

+0

另外,我在前面几页只是不断沿其他页面也即将成立的参数,可以就像t他的老人一直坚持在我不想要的放大器后面。对于每个新请求,我都希望它们被删除。我该怎么办 ?这个问题弄乱了我的整个应用程序 – Anand 2010-03-11 03:47:15

+0

这将是乏味的因为我有很多网址链接像那样在一个页面,并有像这样的许多网页..其实,我只是想要以前添加的参数被忽略 – Anand 2010-03-11 04:00:56

回答

1

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

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

你产生的代码应该是这样的:

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

我发现了这个问题。希望它能帮助别人。我将不得不将includeParams设置为none。它将避免旧的请求参数

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 =”获得”奇怪的是,这应该是默认的,为什么它没有工作,我不知道。

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

0

添加以下属性的url标记

escapeAmp="false"