PrimeFaces ExternalContext responsewriter具体类型

时间:2018-11-26 12:57:51

标签: primefaces export-to-csv

我正在使用JBoss和PrimeFaces从Java应用程序查看csv导出。导出是从网页上的数据表直接调用PrimeFaces DataExporter和CSVExporter实现的。我可以足够合理地遵循所有步骤,但首先要从PrimeFaces上下文的外部上下文获取writer类型。

public void export(FacesContext context,...    
    ExternalContext externalContext = context.getExternalContext();
    configureResponse(externalContext, filename, encodingType);
    Writer writer = externalContext.getResponseOutputWriter();

    ...
    else {
        exportAll(context, table, writer);
    }
    ...             
    writer.flush();
    writer.close();
}

我想知道如何找到作家的具体阶级?

我在这方面的最终目的只是为了了解导出是否全部保留在堆内存中,直到导出完成(我怀疑是导出)还是有一些后台进程可能让其退出?

因此,我假设在末尾进行刷新意味着直到结束时才写入文件,但我只是对它正在逐行调用对PrintWriter的强制转换感到兴趣

protected void exportAll(FacesContext context, DataTable table, Object document) {
        for(int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
            exportRow(table, document, rowIndex);
        }

    }
}

protected void exportRow(DataTable table, Object document, int rowIndex) {
    table.setRowIndex(rowIndex);
    ...
    exportCells(table, document); 
    ...
}

@Override
protected void exportCells(DataTable table, Object document) {
    PrintWriter writer = (PrintWriter) document;

    for (UIColumn col : table.getColumns()) {
            'write cell (no flush)           }
    }
}

有许多报告表明人们对Excel有问题,但对csv却没有。这仅仅是因为csv进程少了很多资源,还是因为我误读了它,而实际上每行写入之间的内存都被清空了?

0 个答案:

没有答案
相关问题