Cookies 除了使用cookie之外,如何在gwt中保留页面数据(状态)

Cookies 除了使用cookie之外,如何在gwt中保留页面数据(状态),cookies,gwt,state,history,Cookies,Gwt,State,History,我有一个有6-7个标签的应用程序。我所希望的是,每当我关闭浏览器并再次打开它时,页面数据都应该保留,即页面的状态应该保持不变。现在,在我的页面中,我有数千个值,比如一些树、文本框和复选框等。因此,将所有这些值逐个存储在cookie中不是一个好主意 我在谷歌上搜索了很多次,但我没有找到任何方法。有人能帮我找到解决办法吗?没有神奇的解决办法。 你可以沿着- Server Side approach - Activities and Places with Asyc calls to get the

我有一个有6-7个标签的应用程序。我所希望的是,每当我关闭浏览器并再次打开它时,页面数据都应该保留,即页面的状态应该保持不变。现在,在我的页面中,我有数千个值,比如一些树、文本框和复选框等。因此,将所有这些值逐个存储在cookie中不是一个好主意


我在谷歌上搜索了很多次,但我没有找到任何方法。有人能帮我找到解决办法吗?

没有神奇的解决办法。

你可以沿着-

Server Side approach - Activities and Places with Asyc calls to get the last stored values.

Client Side approach - Activities and Places with HTML5 local storage. 

两者都不容易与您希望看到的缓存功能配合使用。

我怀疑您在一个页面上是否有数千个唯一值-这将意味着一个非常糟糕的设计

更可能的情况是,您有一个树,它在用户每次访问此页面时显示相同的值(即某种项目的列表),以及对应于特定数据对象(例如产品)的各种输入元素。在这种情况下,此页面的整个状态可以概括为:

myWebSite/?#OrderForm:user=123&category=5&product=xyz&size=large
当用户重新加载此页面(或稍后返回)时,您的应用程序可以解析此URL标记,并且它将确切地知道向用户显示什么:显示OrderForm及其所有面板、复选框等,加载并填充带有类别和产品的树,将类别5设置为菜单中选择的类别,将产品xyz设置为产品树中的选定项,在“详细信息”面板中显示此产品的详细信息,并在大小列表框中选择“大尺寸”


当然,这只是一个例子,但通过正确的应用程序设计,应用程序中的任何“页面”都可以用几个参数和很少(通常是一个)数据对象来描述。然后,您可以将此状态存储在URL令牌、cookie、服务器会话或数据库中—根据您的要求,您有许多选择。

URL中的信息很容易受到浏览器URL字符限制的限制。另外请注意,每个文本框可以有很多字符,毫无疑问,文本区域小部件将抛出一个更大的扳手……对于6-7个选项卡,上述建议可能不像第一次出现的那样可行……@SSR(1)文本框中的文本要么保存为数据对象属性,要么您可以保存一个数据对象的副本,并标记它正在编辑。您不会以页面状态存储每个复选框、文本框、文本区域等。(2) 这就是为什么我说有很多选择:你可以在服务器会话或数据库中存储任何数据。@Andrei Volgin:-非常感谢你的建议。将其存储在服务器会话中是不可行的,因为当用户关闭浏览器时,它会过期。然而,将其存储在数据库中是可行的。我会在我这边检查它的可行性。再次非常感谢。:)请解释反对票