2010-03-11 74 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"