Il existe plusieurs façons de procéder. Le faire dans JSP est un peu méchant.
Comme déjà mentionné, vous pouvez utiliser un Servlet et y injecter/charger vos variables. Par exemple, en accédant au contexte de la session:
MyBean myBean = (MyBean)FacesContext.getCurrentInstance()
.getExternalContext().getSessionMap().get("myBean");
Ou vous pouvez produire à la réponse HTTP à partir d'une méthode dans votre Bean Sauvegarde. Par exemple:
try {
String xml = "<person>damian</person>";
FacesContext ctx = FacesContext.getCurrentInstance();
final HttpServletResponse resp = (HttpServletResponse)ctx.getExternalContext().getResponse();
resp.setContentType("text/xml");
resp.setContentLength(xml.length());
resp.getOutputStream().write(xml.getBytes());
resp.getOutputStream().flush();
resp.getOutputStream().close();
ctx.responseComplete();
} catch (IOException e) {
e.printStackTrace();
}
Ou si vous utilisez Facelets vous pouvez définir le type de réponse dans la balise <f:view>
.
Pourquoi la balise JSP est "méchante"? Si vous avez une page qui fournit du XML, alors cela semble logique? Je suppose que cela se résume à savoir s'il veut sortir un flux XML comme dans votre exemple ou s'il veut définir la structure XML dans le JSP et utiliser son backing-bean pour remplir les éléments de données. –
True. Il peut y avoir quelques situations où le rendre sur la page pourrait être "utile" mais OMI c'est habituellement méchant. Idem pour le faire via Facelets ou tout autre cadre "vue". – Damo