我已迁移到wicket 1。X到8号门柱
我在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;
我在所有其他具有相同资源链接Id的页面中使用相同的excel下载逻辑"excel"在应用程序中所有页面的所有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);
}
};
上面的代码工作正常返回excel文件。在这里,我发现了excel文件名的问题,其中excel文件的名称在我的应用程序的所有页面中都是相同的,因为它是在以前版本的Wicket中早些时候实现的,并且以前工作得很好。但从1小门迁移后。X到8。X版本,它返回旧的下载excel文件点击下载excel文件。所以现在我在文件名中添加了时间戳,以便在excel下载的每个页面上保持不同的文件名。
示例:之前的文件名为" userdata . xml "现在在文件名"UserData_10022021_021311.xls"(UserData_ddMMyyyy_HHmmss.xls)。这解决了我的用例的问题。
我希望它能帮助那些也面临同样问题的人。