在其他检票口页面下载相同的 excel 文件
Downloading same excel file in other wicket pages
我已将 wicket 1.x 迁移到 wicket 8.x。
我添加了下面的 excel 文件下载代码,但在 excel 下载的所有其他页面中获取了第一个下载文件。
ResourceLink<Object> excelLink = new ResourceLink<>("excel", new ResourceReference("downloadExcel") {
private static final long serialVersionUID = 1L;
@Override
public IResource getResource() {
byte [] exBytes = null;
try {
exBytes = new byte[0]; // Some excel file into byte format
} catch (Exception e) {
e.printStackTrace();
}
return new ByteArrayResource(fileFormat.getContextType(), exBytes, fileName);
}
});
excelLink.setOutputMarkupId(true);
excelLink.add(new Label("excelLabel", new ResourceModel("excelLabel")));
return excelLink;
我在所有其他页面中使用相同的 excel 下载逻辑,在所有具有相同名称的所有 Excel 文件的所有页面中,具有相同 ResourceLink Id“excel”在应用程序的所有页面中。
如果它正在维护缓存,那么如何清除缓存以在每个页面中下载正确的 excel 文件?
如果有人能帮我解决这个问题,请告诉我,我会更感激。
要禁用此资源的缓存,您可以这样做:
return new ByteArrayResource(fileFormat.getContextType(), exBytes, fileName) {
@Override
protected void configureCache(final ResourceResponse data, final Attributes attributes) {
data.setCacheDuration(Duration.NONE);
super.configureCache(data, attributes);
}
};
以上代码适用于 return excel 文件。在这里,我发现了 excel 文件名的问题,其中 excel 文件的名称在我的应用程序的所有页面中都是相同的,因为它是在早期版本的 Wicket 中实现的,并且它正在运行之前还好但是在从 1.x 版本迁移到 8.x 版本后,点击下载 excel 文件时 return 正在下载旧的 excel 文件。所以现在我在文件名中添加了时间戳,以便在 excel 下载的每个页面上保持不同的文件名。
示例:文件名之前为“UserData.xls”,现在在文件名中添加时间戳后为“UserData_10022021_021311.xls” (UserData_ddMMyyyy_HHmmss.xls)。这解决了我的用例问题。
希望对同样面临同样问题的人有所帮助。
我已将 wicket 1.x 迁移到 wicket 8.x。
我添加了下面的 excel 文件下载代码,但在 excel 下载的所有其他页面中获取了第一个下载文件。
ResourceLink<Object> excelLink = new ResourceLink<>("excel", new ResourceReference("downloadExcel") {
private static final long serialVersionUID = 1L;
@Override
public IResource getResource() {
byte [] exBytes = null;
try {
exBytes = new byte[0]; // Some excel file into byte format
} catch (Exception e) {
e.printStackTrace();
}
return new ByteArrayResource(fileFormat.getContextType(), exBytes, fileName);
}
});
excelLink.setOutputMarkupId(true);
excelLink.add(new Label("excelLabel", new ResourceModel("excelLabel")));
return excelLink;
我在所有其他页面中使用相同的 excel 下载逻辑,在所有具有相同名称的所有 Excel 文件的所有页面中,具有相同 ResourceLink Id“excel”在应用程序的所有页面中。
如果它正在维护缓存,那么如何清除缓存以在每个页面中下载正确的 excel 文件?
如果有人能帮我解决这个问题,请告诉我,我会更感激。
要禁用此资源的缓存,您可以这样做:
return new ByteArrayResource(fileFormat.getContextType(), exBytes, fileName) {
@Override
protected void configureCache(final ResourceResponse data, final Attributes attributes) {
data.setCacheDuration(Duration.NONE);
super.configureCache(data, attributes);
}
};
以上代码适用于 return excel 文件。在这里,我发现了 excel 文件名的问题,其中 excel 文件的名称在我的应用程序的所有页面中都是相同的,因为它是在早期版本的 Wicket 中实现的,并且它正在运行之前还好但是在从 1.x 版本迁移到 8.x 版本后,点击下载 excel 文件时 return 正在下载旧的 excel 文件。所以现在我在文件名中添加了时间戳,以便在 excel 下载的每个页面上保持不同的文件名。
示例:文件名之前为“UserData.xls”,现在在文件名中添加时间戳后为“UserData_10022021_021311.xls” (UserData_ddMMyyyy_HHmmss.xls)。这解决了我的用例问题。
希望对同样面临同样问题的人有所帮助。