@@ -114,7 +114,7 @@ public class GridExporter<T> implements Serializable {
114
114
115
115
String title = "Grid Export" ;
116
116
117
- String fileName = "export" ;
117
+ private SerializableSupplier < String > fileNameSupplier = () -> "export" ;
118
118
119
119
int sheetNumber = 0 ;
120
120
@@ -298,7 +298,7 @@ public GridExporterStreamResource getDocxStreamResource() {
298
298
}
299
299
300
300
public GridExporterStreamResource getDocxStreamResource (String template ) {
301
- return new GridExporterStreamResource (fileName + ". docx" ,
301
+ return new GridExporterStreamResource (getFileName ( " docx") ,
302
302
makeConcurrentWriter (new DocxStreamResourceWriter <>(this , template )));
303
303
}
304
304
@@ -307,20 +307,20 @@ public GridExporterStreamResource getPdfStreamResource() {
307
307
}
308
308
309
309
public GridExporterStreamResource getPdfStreamResource (String template ) {
310
- return new GridExporterStreamResource (fileName + ". pdf" ,
310
+ return new GridExporterStreamResource (getFileName ( " pdf") ,
311
311
makeConcurrentWriter (new PdfStreamResourceWriter <>(this , template )));
312
312
}
313
313
314
314
public StreamResource getCsvStreamResource () {
315
- return new StreamResource (fileName + ". csv" , new CsvStreamResourceWriter <>(this ));
315
+ return new StreamResource (getFileName ( " csv") , new CsvStreamResourceWriter <>(this ));
316
316
}
317
317
318
318
public GridExporterStreamResource getExcelStreamResource () {
319
319
return getExcelStreamResource (null );
320
320
}
321
321
322
322
public GridExporterStreamResource getExcelStreamResource (String template ) {
323
- return new GridExporterStreamResource (fileName + ". xlsx" ,
323
+ return new GridExporterStreamResource (getFileName ( " xlsx") ,
324
324
makeConcurrentWriter (new ExcelStreamResourceWriter <>(this , template )));
325
325
}
326
326
@@ -490,7 +490,11 @@ public void setTitle(String title) {
490
490
}
491
491
492
492
public String getFileName () {
493
- return fileName ;
493
+ return fileNameSupplier .get ();
494
+ }
495
+
496
+ private String getFileName (String extension ) {
497
+ return Objects .requireNonNull (getFileName ()) + "." + extension ;
494
498
}
495
499
496
500
/**
@@ -499,7 +503,17 @@ public String getFileName() {
499
503
* @param fileName
500
504
*/
501
505
public void setFileName (String fileName ) {
502
- this .fileName = fileName ;
506
+ fileNameSupplier = () -> fileName ;
507
+ }
508
+
509
+ /**
510
+ * Sets a dynamic filename for the exported file.
511
+ *
512
+ * @param fileNameSupplier a supplier that returns the name of the exported file, without
513
+ * extension.
514
+ */
515
+ public void setFileName (SerializableSupplier <String > fileNameSupplier ) {
516
+ this .fileNameSupplier = fileNameSupplier ;
503
517
}
504
518
505
519
public boolean isAutoAttachExportButtons () {
0 commit comments