Primefaces Data Exporter目标必须是绝对id



我正在尝试使用Prime Faces数据导出器组件:

<p:dataExporter type="xls" target="table_name" fileName="summaries"/>  

目标属性似乎需要指向数据表的id。在我的页面上,我有一个包含两次的复合组件。它获取一个参数,告诉它从哪里获取数据。因此,复合组件会两次渲染同一个表,但使用不同的数据。

两张桌子我都要出口商。在我的复合组件中,我有:

<p:dataTable id="overview"

当然,当这两次呈现时,JSF会动态生成id,例如

form:tabView:j_id1693604892_4df53909:overview

在这种情况下,我有什么办法让Prime Faces数据导出器工作吗?

谢谢。

DataExporter.java中的代码(简化Primefaces源代码)

String tableId = (String) target.getValue(elContext);
Exporter exporter = ExporterFactory.getExporterForType(exportAs);
UIComponent component = event.getComponent().findComponent(tableId);
if(component == null) {
    throw new FacesException("Cannot find component "" + tableId + "" in view.");
}
if(!(component instanceof DataTable)) {
    throw new FacesException("Unsupported datasource target:"" + component.getClass().getName() + "", exporter must target a PrimeFaces DataTable.");
}
DataTable table = (DataTable) component;
exporter.export(context, table, outputFileName, isPageOnly, isSelectionOnly, encodingType, preProcessor, postProcessor);

因此不支持多个组件。

你可以尝试的:

  1. 将数据表id作为一个单独的参数传递给复合组件。

  2. 正在为复合组件提供id。因为它是一个命名容器,所以它将这个id预先添加到它的子组件中。这样你就可以随心所欲地引用它。

相关内容

  • 没有找到相关文章