2017-06-05 44 views
0

我試圖在每次下載csv文件時爲我的IResource動態設置fileName。Wicket:我如何爲ResourceStream下載設置動態文件名(帶時間戳)

我附加了我的工作到目前爲止。這是覆蓋和設置每個下載的自定義文件名的正確方法嗎?有一個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

您的實施將正常工作!要設置文件名,您可以覆蓋任何可以訪問ResourceResponse的方法。

+0

太好了。謝謝! – learner

相關問題