Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 下载的文件是html视图,而不是我的CSV播放框架_Java_Csv_Playframework_Download_Playframework 2.0 - Fatal编程技术网

Java 下载的文件是html视图,而不是我的CSV播放框架

Java 下载的文件是html视图,而不是我的CSV播放框架,java,csv,playframework,download,playframework-2.0,Java,Csv,Playframework,Download,Playframework 2.0,我有一个导出方法来获取MongoDB集合中所有项目的CSV。我使用ApacheCommonsCSV jar。如果我注释掉response(),它会给我一个no文件,但是如果我包含response(),它会在我的导出按钮所在的页面加载时下载CSV。此外,它还将下载视图模板生成的HTML代码。但是,CSV是在服务器端的“我的播放目录”(和正确目录)中生成的 <a target="_blank" class="btn btn-success" href="@controllers.App

我有一个导出方法来获取MongoDB集合中所有项目的CSV。我使用ApacheCommonsCSV jar。如果我注释掉response(),它会给我一个no文件,但是如果我包含response(),它会在我的导出按钮所在的页面加载时下载CSV。此外,它还将下载视图模板生成的HTML代码。但是,CSV是在服务器端的“我的播放目录”(和正确目录)中生成的

    <a target="_blank" class="btn btn-success" href="@controllers.Application.export" download="Masterlist.csv">Export Domains</a>

    public static Result export(){

    File fi = new File("Masterlist.csv");

    try{

        CSVPrinter printer = new CSVPrinter(new FileWriter(fi),  CSVFormat.TDF);

        //creates the header for the CSV

        //creates each line of the CSV

        printer.close();
    }catch(IOException e){
        e.printStackTrace();;
    }

    //response().setContentType("application/x-download");
    //response().setHeader("Content-disposition", "attachment; filename=OLP_Masterlist.csv");

    return ok(fi);
}

公共静态结果导出(){
文件fi=新文件(“Masterlist.csv”);
试一试{
CSVPrinter printer=新的CSVPrinter(新文件写入程序(fi),CSVFormat.TDF);
//创建CSV的标题
//创建CSV的每一行
打印机关闭();
}捕获(IOE异常){
e、 printStackTrace();;
}
//response().setContentType(“应用程序/x下载”);
//response().setHeader(“内容处置”、“附件;文件名=OLP_Masterlist.csv”);
返回ok(fi);
}

编辑:使用Play Framework 2.2.1,应自动设置第二个标题。要设置文件名,请使用
返回ok(fi,“OLP_Masterlist.csv”)

在超链接中,不应直接引用控制器,而应使用
@routes.Application.export
。通过使用路由,您将生成正确的链接。当您直接引用该方法时,您是在加载页面时执行的