2017-06-05 12 views
0

csvファイルをダウンロードするたびにIResourceのfileNameを動的に設定するサポートを実装しようとしています。Wicket:ResourceStreamのダウンロードに動的な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

あなたの実装は正常に機能します!ファイル名を設定するには、ResourceResponseにアクセスできる方法を上書きできます。

+0

ありがとうございました! – learner

関連する問題