在其他检票口页面下载相同的 excel 文件

如何解决在其他检票口页面下载相同的 excel 文件

我已将 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);
   }
 };
,

以上代码可以正常返回excel文件。在这里,我发现了 excel 文件名的问题,其中 excel 文件的名称在我的应用程序的所有页面中都相同,因为它是在早期版本的 Wicket 中实现的,并且之前工作正常。但是从 1.x 到 8.x 版本的 wicket 迁移后,它会在单击下载 excel 文件时返回旧的下载的 excel 文件。所以现在我在文件名中添加了时间戳,以便在每个页面上保留不同的文件名以供 excel 下载。

示例:在文件名为“UserData.xls”之前,现在在文件名“UserData_10022021_021311.xls”(UserData_ddMMyyyy_HHmmss.xls)中添加时间戳之后。这解决了我的用例问题。

我希望它可以帮助那些也面临同样问题的人。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?