Comment télécharger ou exporter un fichier gexf xhtml au format XML dans JSF ?
Question
J'ai utilisé le format de fichier gexf dans la bibliothèque JavaScript sigma.js pour dessiner des graphiques en JSF.
J'ai enregistré le modèle gexf dans la balise ui:fragment du fichier graph.xhtml de cette manière :
<?xml version="1.0" encoding="UTF-8"?>
<ui:fragment xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
La bibliothèque sigma.js utilise le graph.xhtml de cette manière :
sigInst.parseGexf('#{request.contextPath}/user/graph/graph.jsf');
Le parogramme utilise un ManagedBean pour initialiser les valeurs des nœuds et des bords dans le fichier graph.xhtml de cette manière :
<ui:repeat value="#{graphInfoBean.edges}" var="edge" varStatus="indexVar">
<edge id="#{indexVar.index}" source="#{edge.source}" target="#{edge.target}"
Tout fonctionne correctement et le graphique est dessiné.Je souhaite que l'utilisateur puisse télécharger/enregistrer le fichier graph.xhtml au format XML afin de pouvoir l'utiliser dans d'autres logiciels utilitaires comme Gephi.
Comment puis-je procéder pour pouvoir convertir le fichier xhtml en XML ?
Merci.
La solution
utiliser preRenderView
événement pour changer l'entête de la page :
<f:event type="preRenderView" listener="#{graphInfoBean.changeHeader}"/>
et la fonction changeHeader est :
public void changeHeader() {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setHeader("content-disposition", "attachment;filename=testFile.xml");
response.setContentType("text/xml");
}