我正在尝试实现每次下载csv文件时为我的IResource动态设置fileName的支持。
到目前为止,我已经完成了我的工作。这是为每次下载覆盖和设置自定义文件名的正确方法吗?有一个方法setFileName也被列为一个选项。 有人能告诉我哪些是推荐的(setResponseHeaders或setFileName)以及如何最好地实现?我对检票口比较陌生,而且我仍然找到了解决方法。
protected <T extends Object> IResource exportResource(String fileName, final IDataExporter exporter, final DataTable<T, String> table)
{
final String file = fileName;
final ResourceStreamResource resource = new ResourceStreamResource()
{
@Override
protected IResourceStream getResourceStream()
{
return new DataExportResourceStreamWriter(dataExporter,table);
}
@Override
protected void setResponseHeaders(ResourceResponse data, Attributes attributes) {
String pattern = "yyyy-MM-dd_HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String timestamp = simpleDateFormat.format(new Date());
String fileName = file.substring(0, file.indexOf(".csv"))+"_"+timeStamp+".csv";
data.setFileName(fileName);
super.setResponseHeaders(data, attributes);
}
}
提前致谢。
答案 0 :(得分:0)
您的实施工作正常!要设置文件名,您可以覆盖任何可以访问ResourceResponse
。