gpt4 book ai didi

java - jsf 中的文件保存对话框

转载 作者:行者123 更新时间:2023-12-01 19:09:12 25 4
gpt4 key购买 nike

我正在尝试以Excel格式导出数据库的结果集。我正在使用 JSF 开发一个 Web 应用程序。所以我需要的是,当用户单击页面中的“导出”按钮时,必须打开一个文件保存对话框,供用户选择目录路径和文件名称。

当在文件对话框中单击“保存”时,我需要根据用户输入的名称和路径将整个结果集写入 Excel 工作表。

但我找不到文件保存对话框以及如何在 JSF 中使用它。我正在使用 jdeveloper 进行开发。

请给我建议一个解决方案。

最佳答案

关键是 Content-Disposition 响应 header ,您需要将其设置为attachment。这将在浏览器中强制显示“另存为”对话框。您需要做的就是设置正确的 Content-Type 响应 header (以便浏览器知道它是什么类型的文件)并将原始文件的内容写入响应正文.

总结一下(假设您使用 Apache POI 生成 Excel 工作表):

public void downloadReport() throws IOException {
// Prepare Excel file to be downloaded.
HSSFWorkbook workbook = generateReportSomehow();
String filename = "yourDefaultFilename.xls";

// Prepare response.
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
externalContext.setResponseContentType("application/vnd.ms-excel");
externalContext.setResponseHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

// Write file to response body.
workbook.write(externalContext.getResponseOutputStream());

// Inform JSF that response is completed and it thus doesn't have to navigate.
facesContext.responseComplete();
}

关于java - jsf 中的文件保存对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8844517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com