我们已经构建了一个 Spring MVC Web 应用程序,该应用程序严重依赖用户按特定顺序执行操作,并且在通常情况下(通过不提供“转到地方”你不应该在给定的时刻),当人们在新选项卡或浏览器窗口中打开应用程序的另一个实例时,我们会遇到一些问题。
由于应用程序将域模型存储在用户的会话中,因此在另一个窗口中使用该程序可能会弄乱模型的数据,我们已经实现了一个页面 ID 机制,该机制可以验证用户以正确的顺序使用程序而不是使用浏览器导航,但是当重置程序(这是一项功能,将用户重定向到主屏幕并清除域模型)之类的事情发生在一个窗口中时,我们仍然面临问题,然后用户尝试依赖要在另一个窗口中填充有效数据的域模型(很快导致 NullPointerException)。