Pregunta

Utilicé el formato de archivo gexf en la biblioteca JavaScript sigma.js para dibujar gráficos en JSF.

Guardé la plantilla gexf en la etiqueta ui:fragment en el archivo graph.xhtml de esta manera:

<?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 biblioteca sigma.js usa graph.xhtml de esta manera:

sigInst.parseGexf('#{request.contextPath}/user/graph/graph.jsf');

El parograma utiliza un ManagedBean para inicializar los valores de nodos y bordes en el archivo graph.xhtml de esta manera:

<ui:repeat value="#{graphInfoBean.edges}" var="edge" varStatus="indexVar">
                <edge id="#{indexVar.index}" source="#{edge.source}" target="#{edge.target}"

Todo funciona correctamente y se dibuja el gráfico.Quiero que el usuario pueda descargar/guardar el archivo Graph.xhtml en formato XML para poder usarlo en otro software de utilidad como Gephi.

¿Cómo hago esto para poder convertir el archivo xhtml a xml?

Gracias.

¿Fue útil?

Solución

usar preRenderView evento para cambiar el encabezado de la página:

<f:event type="preRenderView" listener="#{graphInfoBean.changeHeader}"/>

y la función changeHeader es:

public void changeHeader() {
    HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    response.setHeader("content-disposition", "attachment;filename=testFile.xml");
    response.setContentType("text/xml");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top