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.

È stato utile?

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");
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top