我刚开始使用 Wicket(并且真的不太熟悉很多 Web 开发)并且有一个关于下载链接的问题。我有一个网络应用程序,它只允许用户上传特定文件、处理文件中的某些信息,并提供不同格式的已处理信息的下载。然而,这实际上应该是我正在使用的某些软件的精简版,所以我真的不想做太多处理。我想知道是否有办法为下载链接设置超时,这样如果用户单击链接并且处理时间超过 20 秒左右,它将简单地退出处理并向他们发送错误反而。谢谢!
最佳答案
我同意 Xavi 的观点,即处理(以及可能的处理终止)应该用线程完成。
但是,特别是如果它花费的时间超过几秒钟,最好不要只是等待打开的连接,而是定期检查线程是否完成。
我会做这样的事情:
- 启动执行实际工作的线程
- 显示一个显示“正在处理您的下载”或类似内容的
面板
。 - 将
AbstractAjaxTimerBehavior
附加到面板,计时器持续时间为 10 秒左右。 - 在计时器行为的
onTimer
方法中,检查处理的状态:- 如果它还在工作,什么都不做。
- 如果因为花费的时间太长而被取消,则向用户显示“已取消”之类的消息,例如通过更换面板或将警告标签设置为可见。
- 如果完成,显示“您的下载正在开始”之类的消息并开始下载。参见 this document了解如何进行 AJAX 响应并同时启动下载
关于java - 在 Wicket 中为下载链接设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12395452/