2010-03-11 7 views
3

Dans mon application web, j'utilise strust2 url tag pour passer des paramètres comme id etc., Par exemple, j'utilise un lien pour supprimer une entité et j'utilise param pour passer l'identifiant de l'entité à supprimer. Et je suis tout au long de mon application web pour ajouter, éditer, supprimer une entité.amp est inclus dans balise url tag

Pendant l'exécution, parfois, les paramètres ne sont pas stockés dans les propriétés du bean de mon action. Quand je vois le lien qui est généré, je reçois quelque chose comme

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

À quoi servent ces amplis? Pourquoi sont-ils assis entre les appels d'action (faits par un lien via des actions d'étiquette d'URL)? Au moment où je traverse dans mon application web, je reçois 10 et 20 ampères assis dans l'URL de la demande. Quel est le problème ici ? S'il vous plaît aider.

+0

de plus, les params que je mis en place dans les pages précédentes ne cesse de venir le long des autres pages aussi, juste comme t Les vieux continuent à coller derrière l'ampli dont je ne veux pas. Pour chaque nouvelle demande, je veux qu'ils soient supprimés.Que dois-je faire? ce problème bousille toute mon application – Anand

+0

ce serait fastidieux parce que j'ai beaucoup de liens URL comme ça dans une page et il y a beaucoup de pages comme ça .. En fait, je veux juste que les paramètres précédemment ajoutés soient ignorés – Anand

Répondre

1

En HTML, XHTML et XML certains caractères sont traités spécialement. Les caractères spéciaux utilisés le plus sont moins alors (<) et l'esperluette (&). Le < est uniquement valide au début d'une balise, tandis que le & est utilisé pour coder des entités de caractères (caractères spéciaux, caractères qui ne peuvent pas être saisis, etc.). Parce que & est spécial et ne peut pas apparaître dans le cadre d'une valeur d'attribut, il est codé comme & amp; et bien que cela puisse sembler étrange si vous ne savez pas pourquoi, la valeur de href dans votre question est presque correcte. Dans le même manoir < devrait être codé comme & lt; pour assurer le bon comportement du navigateur. Ne pas encoder ces caractères PEUT fonctionner mais n'est PAS GARANTI pour fonctionner.

Le problème avec votre URL est avec plusieurs ampères; ce que cela indique est le href a été encodé plusieurs fois. La première fois & a été changé en & amp; à ce moment un autre paramètre a été ajouté avec son séparateur &. L'URL entière a ensuite été codée une seconde fois en changeant la première & en & amp; amp; et la seconde à & ampère. Ensuite, pour une raison quelconque, l'URL a été codée une troisième fois, entraînant la première à changer en & amp; amp; amp; et la seconde à & ampère; Pour supprimer l'ampli en excès, vous devez vous assurer que l'URL n'est encodée qu'une seule fois pour le code HTML.

Votre balise résultant devrait ressembler à ceci:

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

J'ai trouvé le problème. J'espère que ça aide les autres.

Je dois définir includeParams à none. Cela évitera les anciens paramètres de requête

0

Je sais que c'est un peu vieux, mais je suis tombé sur le même problème et l'a résolu grâce à Luckydev. Voici mon exemple de code.

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

Tout ce que je devais faire était d'ajouter « includeParams = » get » La chose étrange est que ce doit être le défaut alors pourquoi il ne fonctionne pas, je ne sais pas.

Voici une référence à l'API: http://struts.apache.org/2.1.6/struts2-core/apidocs/org/apache/struts2/components/URL.html

0

AJOUTZ attribut à la balise url

escapeAmp="false" 
Questions connexes