问题标签 [gwt-places]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
200 浏览

javascript - GWT 和第三方跨域 JavaScript

我目前有一个使用 Google 提供的活动和地点模型的 GWT 项目。我们正在与第三方跨域 JavaScript 解决方案集成,该解决方案在 iframe 中呈现外部域的 JSP,并在用户完成此 JSP 中的工作时利用 window.location 传输通知我们的域。

问题在于,通过使用 window.location 传输,GWT 的位置系统将捕获 URL 的编辑并尝试导航到不存在的位置。

我们确实有一些影响力让第三方做出改变,所以我能看到的三个选项是:

  1. 如果它包含此第三方 JS 使用的特定保留字符串列表,则捕获尝试的地点导航并忽略它。
  2. 让第三方更改他们的解决方案以利用 window.name(减少他们的重构)
  3. 让第三方更改他们的解决方案以利用 JSONP(他们进行更多重构)

有什么方法可以真正实现#1?

编辑所以我想出了如何通过滚动我自己版本的 GWT 的 PlaceHistoryHandler 并更改handleHistoryToken方法来实现#1。真正的问题是这三种解决方案中的哪一种是最佳实践?

0 投票
1 回答
390 浏览

gwt - 通过 GWT 位置 API,您如何在不重新加载页面的情况下更改 URL/PLACE/Place-Token?

我们在 GWT 页面中有一个巨大的订单表。当用户点击订单时,页面的下半部分会加载该订单的详细信息。

当表中的条目 OnSelect 时,我可以触发地点更改事件并将地点标记从 #OrdersPlace: 更改为 #OrdersPlace:123,其中 123 是订单号。问题是这也需要重新加载整个表。

有没有办法将 URL 从 #OrdersPlace: 更改为 #OrdersPlace:123 以便在浏览器刷新时我可以通过读取 Place Token 回到原来的位置,而无需通过重新加载整个活动从头开始?

0 投票
1 回答
304 浏览

gwt - 在非常大的项目中使用或不使用 GWT 地点和活动

想象一个非常大的 gwt 应用项目。这只是网络上某种形式的科学环境。因此,对于每个用户,它都会存储应用程序的状态,并且与浏览器历史记录或书签无关。历史甚至不能应用于应用程序本身(如 CAD 系统或其他任何东西,没有直观的“后退按钮”)。我们正在考虑是否将现代活动和地点与 MVP 一起使用。如果历史管理没有意义,活动和地点的优缺点是什么?与没有任何地点和活动的传统 MVP+DI 相比,该框架能否在代码维护和代码模块化方面提供一些优势?考虑到应用程序将为某种形式的插件提供 API

0 投票
1 回答
1389 浏览

gwt - 如何使用带有 hashbang URL(在 GWT 中)的页内 HTML 锚?

我在实现页内 HTML 锚点时遇到了一点问题,同时还通过 hashbang 获得了可收藏的 URL。描述很简单:

在这个页面上有很多文本,我需要一些 HTML 锚点来导航。在旧式 HTML 中,我会写<a href="#myAnchor">AnchorText</a>.

GWT 平台识别出更改并将我扔回我的DefaultPlace. 这很清楚,因为它无法将 URL 与演示者相关联。

所以现在(简单的)问题是:如何在使用页内导航的同时拥有 hashbang URL?

0 投票
1 回答
207 浏览

gwt - 将不同 GWT 活动所需的状态放在哪里?

我目前正在开发一个 GWT 应用程序,但我仍然对它如何组合在一起有些模糊(在没有首先了解整个框架的情况下进行更改的乐趣,尽管这可能很困难)。

我们有一些活动,它们都对应于 UI 的各个部分(例如,主要内容、工具栏和事物列表)。我不确定这是否是活动的意图,但我想我现在不能轻易改变。我现在的问题是,事物列表包含主要内容也需要的状态(当前选择),并且在某种程度上工具栏也需要(至少工具栏当前它——我已经问不出来了)。

但实际上存储它的合适地方是什么我猜想将实际的视图实现结合在一起并将选择仅存储在列表中并不是一个好主意。

0 投票
1 回答
461 浏览

gwt - GWT - 带有地点/活动的对话框

我在页面顶部有一个标题栏,其中包含按钮和锚点。标题栏上的一个锚点会打开一个对话框,执行以下操作:

视图调用执行goTo到新位置的活动,在与该位置关联的活动的开始方法中,调用实例化自定义对话框。

现在这里出现了两个问题:

1)因为从标题栏导航到该位置,所以标题栏活动被活动管理器关闭,因此单击锚点后按钮不起作用。我不希望标题栏活动被关闭。

2)单击此锚点后,屏幕中央的主面板变为空白。我不知道为什么会这样,但显然不希望这样。

如何解决这两个问题?

0 投票
1 回答
172 浏览

gwt - 使用 RequestFactory 的 stableId() 作为状态信息时,可以避免注入 Places 吗?

我的注入 Gin 的 GWT 应用程序将 RequestFactory 与活动和地点一起使用。

为了在 Places 中标记 RequestFactory stableId(),我注入了 RequestFactory。这使班级可以访问getProxyId(token)getHistoryToken(stableId)。Tokenizer 调用非静态的、受保护的方法来标记特定的 Place。

这是一个示例类。

该策略需要在需要新地方的地方注入提供者。不幸的是,这包括静态标记器。

我尝试requestStaticInjection()在 Gin 客户端模块中启动静态注入(针对每个 Place 类)。我所拥有的作品——历史除外。我无法让静态提供程序初始化。它会在 Tokenizer 中导致 Null 异常。

有一个更好的方法吗?谢谢你的指点。

0 投票
3 回答
2915 浏览

gwt - GWT MVP 在 Place 更改时更新 Activity 状态

在地点更改时更新活动状态的最佳做法是什么?假设您有一个带有视图的活动,该视图显示类别列表和类别中的项目列表。如果选择了不同的类别,则应用程序将使用类别 ID 转到新位置。然后我想只刷新项目而不是创建也重新读取类别列表的新活动。

我目前的做法是这样的:

0 投票
1 回答
321 浏览

gwt - 当每个位置的屏幕布局发生变化时,GWT 使用活动和位置

我对 GWT 的活动和地点的理解是,对于屏幕上的给定区域,您有一个ActivityManager和一个ActivityMapper. 您可以在屏幕上拥有多个区域,这意味着您可以拥有多个ActivityManagersActivityMappers(每个区域一个)。因此,每当有人询问他们各自应该在给定的情况下显示什么活动PlaceChange时。只要你们所有人都有一个共同的布局,他们可以以不同的方式重用以执行不同的活动,这就很有效。我的问题是我们如何处理不同使用完全不同的布局的情况?我的第一个想法是拥有更多,如果不使用特定区域,那么ActivityManagersActivityMapperPlacePlacesPlacesActivityManagersActivityMappersPlaceActivityMappernull因为当我们更改为 that 时,该区域将简单地返回Place。如果有更好的方法,我将不胜感激。

0 投票
1 回答
137 浏览

java - GWT Codesplitting 集成:MVP 和 Activity/Places

假设您有一个AcceptsOneWidget包含选项卡式窗格的“显示区域”( )。单击不同的选项卡(即,从“ fantasyo ”到“ profile ”)会导致在窗格中显示全新的内容。这似乎是代码分割的完美用例,因为在用户单击“配置文件”选项卡之前,他们不需要下载显示它所需的代码。(注意:如果任何 GWT 专家不同意并且认为这不是代码拆分的正确用例,那么请向我指出这一点,但这不是这个问题的重点,所以请多多包涵!)

在此处输入图像描述

现在,如果我基本 GWT 体系结构的理解是正确的,那么显示“配置文件”选项卡所必需的代码由Activity(ies)、Place(s) 组成,也许还有一些 MVP 内容,例如 a PresenterModuleEntryPoint等。当然这个会因应用程序和开发人员的不同而有所不同(正如我在 GWT 中了解到的,有很多方法可以实现相同的目标),但无论如何,它都是一堆 MVP/Activity/Place “东西”。为了这个问题,我喜欢这个 SO question的回答者提出的模型。

在阅读了这篇关于 AsynchProvider 模式的文章后,我试图将所有这些最佳实践结合在一起并实现一个架构:

  • 我实现了代码拆分,使得窗格中的每个选项卡都是代码拆分(是代码拆分吗?codesplat作为它自己的片段,并且只有当/当用户第一次点击它时才会下载
  • 显示/渲染/实现每个片段(选项卡/窗格)所需的所有代码都整齐地组织并遵循AsynchProvider上述文章中引用的模式;这允许它被划分并且不依赖于其他片段

我开始将所有部分放在一起,但仍然没有看到这两个概念如何在工作代码中联系在一起。

我发现 GWT 是神秘的、强大的和美妙的,但是如果没有可遵循的实际代码示例,则很难学习。当然,这些线框在“ fantasyo ”或“ profile ”窗格中并没有真正显示出任何复杂性,所以请再次忍受并假装它们都是相当复杂的显示区域,具有许多丰富的 UI 组件。提前致谢!