2009-10-27 5 views
1

je transmets à une action en donnant commeForwarding struts

<forward name="sample" path="/sample.do?button=default" /> 

je veux ajouter un attribut dans le chemin et moi:

<forward name="sample" path="/sample.do?button=default&value=text" /> 

... et j'obtiens org .xml.sax.SAXParseException

Une solution pour cela?

Répondre

0

vous ne pouvez pas utiliser « & » dans struts-config.xml

valeur = texte doit être passé de votre action ... pas comme vous essayez de le transmettre (dans l'URL).

Votre étiquette de transfert doit être associée à une action. cette action devrait avoir un getter appelé value qui retourne 'text'. De quelle manière sample.do aura accès à ce varable.

1
<forward name="sample" path="/sample.do?button=default&value=text" /> 

Vous pouvez transmettre plusieurs paramètres en avant. Mais vous devez utiliser '& amp;' au lieu de '&'.

à proprement parler, le gestionnaire d'analyseur doit analyser la mémoire tampon pour les caractères esperluette (&) et des caractères support à angle gauche (<) et les remplacer par les cordes & amp; ou & lt ;, selon le cas.

Ainsi, l'énoncé sera aussi

<forward name="sample" path="/sample.do?button=default&amp;amp;value=text" /> 
2

Comme Omniprésent et Shashi déjà dit, vous devez encoder l'esperluette comme &amp; afin que la définition forward ressemble à ceci:

<forward name="sample" path="/sample.do?button=default&amp;value=text" /> 

Cependant , les URL définies dans votre struts-config.xml sont figées, et si vous avez besoin de changer dynamiquement une valeur ou d'ajouter un autre paramètre, vous pouvez le faire en créant un nouveau ActionForward basé sur le forward que vous obtenez de mapping.findForward().

ActionForward forward = mapping.findForward("sample"); 
StringBuilder path = new StringBuilder(forward.getPath()); 
path.append("?id="); 
path.append(someobject.getId()); 
path.append("&value="); 
path.append(getValue()); 
return new ActionForward(path.toString());