Wicket:如何为ResourceStream下载设置动态fileName(带时间戳)

时间:2017-06-05 20:11:23

标签: wicket

我正在尝试实现每次下载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);
}

}

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的实施工作正常!要设置文件名,您可以覆盖任何可以访问ResourceResponse

的方法