La mise en œuvre ServletResponseAware
pourrait fonctionner dans d'autres situations, mais cela ne contribue pas à Freemarker et Struts2. :-(Je viens de tracer à travers avec un débogueur, et a constaté que ...
en mettant en œuvre ServletResponseAware
, on m'a donné accès à la réponse, et je pouvais changer le type de contenu de mon action. Bonne .
une fois que mon action a été fait, le contrôle bientôt fini en org.apache.struts2.views.freemarker.FreemarkerResult
, ce qui rend le modèle
la méthode preTemplateProcess()
définit le contenu de type de la réponse, sans tenir compte de la valeur que j'avais mis :-(
apparemment il y a un « attribut personnalisé » qui pourrait être utilisé pour remplacer, mais je n'ai trouvé aucune explication dans google encore
la classe FreemarkerResult
elle-même peut avoir un type de contenu mis à remplacer la valeur par défaut, mais ... je ne sais pas encore où cela peut être réglé, peut-être dans une configuration de jambes de force?
donc jusqu'à présent, il ne semble pas que l'action peut définir le type de contenu, mais heureusement, comme le note Thomas ci-dessus, cela outrepasse tout ce qui:
${response.setContentType("text/xml")}
Donc, au moins il est possible à partir des modèles. Bien sûr, serait plus facile et plus sûr de donner un ensemble d'actions productrices xml une superclasse commune qui prend soin de cette ...
Cela a fonctionné pour moi, je ne sais pas pourquoi d'autres ont dit que non. – 3urdoch
cela décrit ce que j'avais besoin de faire pour la vélocité: http://blog.bielu.com/2008/05/struts-velocity-and-flexible-content.html – depsypher