¿Cómo descargar o exportar un archivo xhtml gexf como XML en JSF?
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.
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");
}