gpt4 book ai didi

Grails 导出插件不下载任何文件

转载 作者:行者123 更新时间:2023-12-05 00:27:47 26 4
gpt4 key购买 nike

我想使用 grails 导出插件将我的域类导出到 xls 和 csv 文件中。

在我名为 的主要布局中front.gsp ,我这样做了:

<!DOCTYPE html>
<html lang="en">
<head>
...
<g:layoutHead />
</head>
<body>
<sec:ifLoggedIn>
<r:require module="export"/>
<export:formats formats="['csv', 'excel', 'ods', 'pdf', 'rtf', 'xml']" action="exportTest" />
...
<g:layoutBody />
<r:layoutResources/>
<script type="text/javascript" src="${resource(dir: 'js', file: 'jquery.min.js')}"></script>
<script type="text/javascript" src="${resource(dir: 'js', file: 'bootstrap.min.js')}"></script>
<script type="text/javascript" src="${resource(dir: 'js', file: 'application.js')}"></script>
</body>
</html>

进入我的 DomainClassController.groovy 我这样做了:
def exportTest() {
if(!params.max) params.max = 10

if(params?.format && params.format != "html"){
response.contentType = grailsApplication.config.grails.mime.types[params.format] response.setHeader("Content-disposition", "attachment; filename=contacts.${params.extension}")

exportService.export(
params.format,
response.outputStream,
ContactDTO.list(params),
[:],
[:])
[contactDTOInstanceList: ContactDTO.list( params )]
}
}

我还创建了一个名为 的 View exportTest.gsp 进入我的 Controller 的 View 文件夹,只是空文件来临时解决 404 问题。

我没有任何错误消息,但是当我单击任何导出按钮时,我正在重定向到我的页面 exportTest.gsp 没有文件下载

如何使用 grails 导出插件获取下载的文件?我按照用户指南,没有任何错误(已解决)但没有创建文件?

谢谢阅读 !

斯奈特

编辑:我只是看到,当点击导出链接时,生成的 url 是:
http://localhost:8080/site/controller/action?format=excel&extension=xls

但奇怪的是,在我的 Controller 中输入“println params”时,输出是:
[extension:xls, action:exportTest, format:null, controller:contactDTO, max:10]

params.format 为空但设置为 url ?!!!

像这样更改网址(并调整 Controller 代码):
http://localhost:8080/site/controller/action?formatD=excel&extension=xls

给我以下错误:
Firefox ne peut trouver le fichier à l'adresse http://localhost:8080/site/controller/action?formatd=excel&extension=xls.

最佳答案

我的猜测是 params.format 与参数中的 Grails 内容协商格式混淆了。导出标签似乎会生成那种格式,除非它得到修复,否则您可以创建指向您的 exportTest 的链接。并通过您想要的格式让我们说 exportFormat 变量名称。在您的 Controller 上使用 exportFormat 而不是 format。

还要确保 ContactDTO.list(params)正在返回一些值。另一点是确保您已在配置中定义了内容类型,如导出插件 documentation 中所述。

所以你可能需要创建一个这样的链接:

<a class="csv" href="/testData/loader/exportTest?exportFormat=csv&extension=csv"> 
CSV
</a>

在您的 Controller 中:
def exportTest() {
if(!params.max) params.max = 10

if(params?.exportFormat && params.exportFormat != "html"){
response.contentType = grailsApplication.config.grails.mime.types[params.exportFormat]
response.setHeader("Content-disposition", "attachment; filename=contacts.${params.extension}")

exportService.export(
params.exportFormat,
response.outputStream,
ContactDTO.list(),
[:],
[:])
[ContactDTO: ContactDTO.list( params )]
}
}

关于Grails 导出插件不下载任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961339/

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