1

我无法将素数面图导出为图像。

categoryModel与 Prime-show Case 相同。

是否需要依赖库才能导出?

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    ......
    template="/common/commonLayout.xhtml">
    <ui:define name="content">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script type="text/javascript">
            //<![CDATA[
            function exportChart() {
                //export image
                $('#output').empty().append(chart.exportAsImage());

                //show the dialog
                dlg.show();
            }
            //]]>
        </script>

        <h:form enctype="multipart/form-data">
            <p:barChart id="basic" value="#{ChartActionBean.categoryModel}" legendPosition="ne"  
                        title="Bar Chart" widgetVar="chart" animate="true" yaxisLabel="Number of Count"/>
            <p:commandButton type="button" value="Export" icon="ui-icon-extlink" onclick="exportChart()"/>  

            <p:dialog widgetVar="dlg" showEffect="fade" modal="true" header="Chart as an Image">  
                <p:outputPanel id="output" layout="block" style="width:500px;height:300px"/>  
            </p:dialog>  
        </h:form>
    </ui:define>
</ui:composition>
4

2 回答 2

3

在 Showcase 和 Export 中,按钮和 OutputPanel 没有被包裹,因此 $('#output') 能够选择预期的元素来附加图像。

但是在您的情况下,您已经将这些组件包装在其中,因此 JSF 将为 j_idt10 之类的表单生成一个 id,并且组件的 id“输出”将变为“j_idt10:输出”。

要解决这个问题:

<h:form id="form1">
  //chart
  // export button
  //dialog containing outputPanel
</h:form>

在javascript中:

function exportChart() {
     $('#form1\\:output').empty().append(chart.exportAsImage());
     dlg.show();
}

或者干脆把$('#output').empty().append(chart.exportAsImage()); 将按预期工作。

于 2013-08-18T08:11:49.363 回答
0

我还认为要指定模型,您使用模型属性而不是value。因此,在您的情况下,它将是:

<p:barChart id="basic" model="#{ChartActionBean.categoryModel}" legendPosition="ne" title="Bar Chart" widgetVar="chart" animate="true" yaxisLabel="Number of Count"/>
于 2015-05-29T13:26:06.877 回答