1

我在 sigma.js JavaScript 库中使用 gexf 文件格式在 JSF 中绘制图形。

我以这种方式将 gexf 模板保存在 graph.xhtml 文件中的 ui:fragment 标记中:

<?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">

sigma.js 库以这种方式使用 graph.xhtml:

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

parogram 使用 ManagedBean 以这种方式初始化 graph.xhtml 文件中的节点和边值:

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

一切正常,图表已绘制。我希望用户能够将 graph.xhtml 文件下载/保存为 XML 格式,以便能够在 Gephi 等其他实用软件中使用它。

我该怎么做才能将 xhtml 文件转换为 xml?

谢谢。

4

1 回答 1

1

使用preRenderView事件更改页面标题:

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

而changeHeader函数是:

public void changeHeader() {
    HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    response.setHeader("content-disposition", "attachment;filename=testFile.xml");
    response.setContentType("text/xml");
}
于 2014-02-08T12:21:01.093 回答