【问题标题】:gwt - history - how to "keep" UI stategwt - 历史 - 如何“保持” UI 状态
【发布时间】:2014-03-08 15:54:27
【问题描述】:

我尝试了example,它展示了如何从历史中获取数据以重新生成 UI;我在所有“历史使用”示例中看到的大部分内容仅与 UI 重新生成有关,因此它不是静态方式...

但是“每个 UI 状态都可能有其独特的 url,就像 JSF 对流所做的那样”呢?例如,我有一个类似的应用程序网址

http://localhost:8080/myapp/MyApp.html

应用程序默认 UI 包含有助于浏览我的测试目录的主菜单;我试图通过以这种方式构建 url 来使 UI 动态保持在历史记录中

http://localhost:8080/myapp/MyApp.html#menu_testcategory_page1

但是当我点击互联网浏览器“刷新”按钮时,url 与http://localhost:8080/myapp/MyApp.html#menu_testcategory_page1 保持相同,但 UI 恢复到默认状态:(

所以我的问题是

即使在单击浏览器的刷新按钮后(我的意思是卸载/加载窗口事件发生),纯 gwt 中是否有最佳方式保持相同的 UI 状态?

谢谢

附:重量 2.3

【问题讨论】:

    标签: gwt gwt-history


    【解决方案1】:

    您应该实现活动和地点模式:http://www.gwtproject.org/doc/latest/DevGuideMvpActivitiesAndPlaces.html

    我用了3年了,效果很好。

    但是请注意,当您重新加载页面时,您会丢失所有状态、数据等。如果您需要保留其中的一些,您可以使用 Place (#page1) 和令牌的组合告诉对应的Activity代表这个Place的View的状态,即(#page1:item=5)。

    【讨论】:

    • 它是否有助于“保留”用户界面并且即使在单击刷新后也不返回其默认状态,或者它专用于使用历史标志重新生成用户界面?请提供更多详细信息。
    • 当您重新加载页面时,您无法保留任何内容 - 浏览器会破坏所有 UI。使用什么并不重要——GWT 或其他东西。您只能通过 URL 告诉代码用户所在的位置,并通过令牌提供更多详细信息,但您的代码必须在页面重新加载后重新创建 UI。
    • 我的意思是 UI“缓存”... 有没有办法缓存 UI 当前状态,或者除了每次 gwt 应用程序重新加载时都重新生成 UI 之外没有其他办法?问题是 - 这是非常不方便的,因为在目录导航重新生成每个目录页面的情况下,此外,如果从头开始重新生成(目录页面 N)的所有图形,则需要 RPC :(
    • 我曾经做过一个应用,页面每秒刷新 60 次,3 年前连智能手机浏览器都没有问题。从服务器获取数据是另一回事,但在这里您可以使用服务器端的缓存来实现快速响应。您还可以在现代浏览器的本地存储中最多存储 5MB,然后在页面重新加载时访问这些数据。
    【解决方案2】:

    你可能只是忘了打电话

    History.fireCurrentHistoryState();
    

    从您的入口点。

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2015-12-21
      • 2011-05-30
      相关资源
      最近更新 更多