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

Wicket: how do I set dynamic fileName (with timestamp) for ResourceStream download

我正在尝试实现对每次下载 csv 文件时为我的 IResource 动态设置文件名的支持。

到目前为止,我已将我的作品附在下面。这是为每次下载覆盖和设置自定义文件名的正确方法吗?有一个方法 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);
}

}

提前致谢。

您的实施会很好!要设置文件名,您可以覆盖任何允许您访问 ResourceResponse.

的方法