Come scaricare o esportare XHTML GEXF File come XML in JSF?
Domanda
Ho usato il formato del file GEXF in Sigma.js JavaScript Library per disegnare grafici in JSF.
Ho salvato il modello GeXF in UI: tag frammento in file graph.xhtml in questo modo:
<?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 libreria SIGMA.JS utilizza il grafico.XHTML in questo modo:
sigInst.parseGexf('#{request.contextPath}/user/graph/graph.jsf');
.
Il parogramma utilizza un managedbean per l'inizializzazione dei nodi e dei valori dei bordi nel file graph.xhtml in questo modo:
<ui:repeat value="#{graphInfoBean.edges}" var="edge" varStatus="indexVar">
<edge id="#{indexVar.index}" source="#{edge.source}" target="#{edge.target}"
.
Tutto funziona correttamente e il grafico è disegnato. Voglio che l'utente sia in grado di scaricare / salvare il file graph.xhtml in formato XML in modo da poterlo utilizzare in altri software di utilità come Gephi.
Come faccio a farlo in modo da poter convertire il file XHTML in XML?
Grazie.
Soluzione
Utilizzare l'evento preRenderView
per modificare l'intestazione della pagina:
<f:event type="preRenderView" listener="#{graphInfoBean.changeHeader}"/>
.
e la funzione ChangeHeader è:
public void changeHeader() {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setHeader("content-disposition", "attachment;filename=testFile.xml");
response.setContentType("text/xml");
}
.