Bonjour à tous 
Je déterre de nouveau ce topic pour apporter ma petite contribution finale.
Dans les post précédents je soulignais le fait que mon action (génération d'un fichier XML) déclenchée par un bouton ne produisait aucun résultat alors que lorsqu'elle est déclenchée par un lien <a></a> la popup de téléchargement s'ouvre.
Je suis revenu à la charge récemment sur ce problème et y ai trouvé une solution qui, bien que pas très propre, a le mérite de fonctionner.
Suspens... J'utilise une frame ! Pouin pouin pouin pouin....
Et oui, l'appel via le bouton <sx:submit> effectue un appel AJAX qui recharge la balise contenant, alors que le lien <a> recharge la page.
Du coup l'introduction de la frame règle le problème puisque c'est à elle qu'on va donner l'adresse du fichier :
1 2 3
| <!-- iFrame invisible dont l'attribut src sera renseigné au moment de l'appel -->
<iframe id="myFrame" src="" style="visibility:hidden;width:0px;height:0px;"></iframe> |
Et du côté du bouton :
<sx:submit onclick="document.getElementById('myFrame').src='exportAsXML.action';" />
Et voilà, dans la définition de l'action dans struts.xml on change le type de contenu renvoyé par application/download :
<param name="contentType">application/download</param>
Ou par application/pdf dans le cas d'un PDF, ou autre si vous voulez tester autre chose 
C'est tout pour moi, bonne continuation à tous
Partager