Vaadin中的缓存问题

4
我有一个包含以下三个步骤的示例应用程序:
输入用户详细信息 -> 个人详细信息 -> 完成
当我单击链接时,它会调用我的Vaadin应用程序。问题在于,一旦我的三个步骤完成,当我再次单击我的Vaadin链接时,它仍然显示最终向导页面“完成”。
(如果我想再次查看第一个页面,即“输入用户详细信息”向导页面,则需要清除浏览器缓存或重新启动浏览器)
2个回答

9
由于Vaadin将会话保存在内存中,只有在看到新的浏览器会话(即缓存已清除或浏览器重新启动)时,您的应用程序才会重置。在开发过程中清除会话的另一种方法是将“?restartApplication”添加到应用程序的URL中。这也将清除应用程序状态。
因此,如果您希望在正常使用Vaadin应用程序时重置其状态,则必须以编程方式确保内部逻辑以这种方式工作。例如,为您的第一个视图调用自定义reset()方法。
请注意,不要将应用程序的基于会话的状态与每次按下重新加载或再次打开链接而未创建新浏览器会话的页面状态混淆。
关于此问题的Vaadin书籍章节:http://vaadin.com/book/-/page/architecture.server-side.html

嗨 Jonas,感谢你的回复。你能发布一些清除 Vaadin 缓存的示例代码吗?这对我会更有帮助。 - Kalyan Raju
4
如果您希望以编程方式结束应用程序状态,只需调用yourApplication.close()即可。这将结束会话并重新启动应用程序。然而,我更喜欢通过将输入值设置为null或默认值来重置表单数据。 - Jonas Granvik
或者至少考虑将值设置回默认值。 - Jonas Granvik

1

在浏览器中调用应用程序时,只需在URL中添加?restartApplication参数。 例如, 如果您正在调用应用程序:localhost:8080/myvaadinapp/, 则尝试调用:localhost:8080/myvaadinapp/?restartApplication

这告诉Vaadin Servlet在加载页面时创建应用程序的新实例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接