问题标签 [gwt-mvp]
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.
gwt - GWT RunAsync - 发布模式下的奇怪行为
正如这个问题GWT 中所建议的那样 - 在使用场所/活动/映射器时我应该在哪里使用代码拆分?,我创建了一个 ActivityProxy 来嵌套我的活动。
我的实现基于此http://code.google.com/p/google-web-toolkit/issues/detail?id=5129(第 6 条评论),并进行了一项修改:我在调用 GWT 之前添加了对提供程序的检查.RunAsync:
但由于某种原因,这在发布模式下不起作用:永远不会调用 onFailure 方法,但我第一次使用它时永远不会显示我的活动。如果我重新加载这个地方,一切都显示得很好。
然后我意识到执行以下操作可以解决问题:
因此,即使我不明白它为什么起作用,我也开始在我的所有活动中使用它。
当我决定为我的 ActivityProxy 使用生成器时(以避免为每个 Activity 编写提供程序),我再次遇到了这个问题。合成器变成GWT.create(ActivityProxy).wrap(MyActivity.class);
基本上,生成的代码如下所示:
并且出现了同样的问题:我的应用程序在第一次使用时无法显示我的活动。
这么简单的问题:“为什么?”
gwt - GWT 活动和编辑器框架
我一直在使用 GWT MVP 框架 + GWT Editors 框架处理一些小项目。我有视图接口,其字段声明如下:
视图实现如下所示:
在我的活动中,我有对应视图的参考,当我必须做(在活动中)这样的事情时:
我必须做演员
之后我无法测试这个单元,因为在我的测试中我定义了 View 的行为以返回 Mock(IsEditor<ValueBoxEditor<Long>>)
作为view.getFiled()
结果我得到:
从 Activity 调用 Views 组件方法而不进行强制转换的最佳实践是什么?
gwt - 如何保持视图“谦虚” - 使用带有特殊 Oracle 和 Suggestion 的 SuggestBox
我学会了如何实现我自己的 SuggestionOracle(“AuSuggestOracle”)和自己的 Suggestions(“AuMultiWordSuggestion”)。在我的例子中,建议对象是用 DTO 构造的。在选择事件中,我需要这个 dto(或它的某些字段)做出适当的反应。我实现了一个小部件,其中包含 3 个建议框,带有这个特殊的预言和它们之间的一些逻辑。现在我想应用 MVP 模式 - 在演示者和视图中拆分此小部件。目前演示者显示界面如下所示:
问题是返回“AuSuggestOracle”的方法中关于我的模型的隐含知识。所以我的问题是如何让视图/界面“谦虚”。在我的情况下,显示的建议字符串是模棱两可的,我至少需要选定项目的“id”才能知道选择了什么 DTObject。
gwt - 消除 GWT ActivityMapper 样板
我正在使用 GWT 活动和地点框架来构建我的应用程序,结果很好。让我烦恼的一件事是,ActivityMapper
实现是 (1) 接收应用程序中的所有视图 (2) 包含一个巨大的 if/else 块,用于根据接收到的位置实例化活动。随着观看次数的增加,情况只会变得更糟。
我已经在使用Gin,但我不知道如何在这里使用它。
我怎样才能减少或消除我的样板ActivityMapper
?
gwt - GWT MVP - 维护多个彼此分离的显示器
我有一个 GWT 应用程序,我正在将 GWT MVP 与地方/活动一起使用。
我的应用程序布局类似于
菜单 | 内容
菜单和内容显示会动态变化,其中一个会与另一个分开变化。我的意思是,当内容显示发生变化时,我不想更新菜单显示,反之亦然。两个显示器都需要能够响应 PlaceChangeEvents 并在这些事件发生时自行更新。问题是每个显示应该只更新以响应某些 PlaceChangeEvents,而忽略指向另一个显示的 PlaceChangeEvents。但是,这在使用“标准”GWT MVP 模式时不起作用,因为即使每个显示器都有自己的 ActivityManager,它们也会自动获取所有 PlaceChangeEvents,因为有一个 PlaceController 在单个 EventBus 上侦听。我能看到的唯一方法是拥有两个 EventBus' s 和两个 PlaceController - 一个用于菜单,一个用于内容。所以我的问题是这是否是一个好的解决方案,还是有一个更简单/更好的方法我错过了?这个解决方案的一个问题是 PlaceHistoryHandler 只能注册到 EventBus 之一。
smartgwt - GWT mvp:Places、RequestFactory 和 SmartGwt 和 gwt-sl
我是 GWT 和 MVP 的新手,并且已经探索了一些库(gwt-sl、gwt-presenter、gwt-dispatch)和框架(smartgwt ..),我感到非常困惑。我决定坚持使用 smartgwt ui 组件和 gwt mvp 来处理它们。smartgwt 使用我希望理想扩展的数据源进行建模(并使用 dto(或使用 gwt 的请求工厂的代理对象)填充)。但是我现在还没有掌握所有这些的窍门。
a) 在谷歌列出的 gwt mvp 中,一个地方的具体状态是什么?我们总是派人去一个新地方吗?如果没有并且历史维护位置令牌,那么状态是如何加载的?
b) 从另一篇关于gwt mvp 的帖子中,模型在哪里?我们大多数人调整到典型的 mvc 设计范式会假设模型状态存在于演示器中。我想那么正如其他地方所建议的那样,clientfactory 将是在存储视图中显示当前模型的合适位置?
c) 我想知道是否可以尝试使用 requestfactory 来填充 smartgwt 数据绑定组件?(据我了解,使用 smartgwt 服务器端框架基本上做同样的事情.. 只通过网络传输对象图中的变化?)
d)在 David Chandler 的幻灯片的第 47 页上,我不太理解所提议的布局。(2个placeChangeHandler?每个活动管理器的2组widgetList?有人可以解释一下吗?
e) 任何人都可以分享他们使用gwt-sl的经验(用于服务器端 spring 集成?)
在此先感谢所有 gwt 大师
rest - 使用 [SPRING MVC] 或 [GWT + MVP](并使用 spring ROO)创建 REST 架构的优点和缺点?
我问这个问题是因为,我看到 Roo 包括 SPRING MVC 和 GWT ......但是
- GWT(在其网站上)显示了 MVP 模式的示例,但我认为它与 SPRING MVC 框架无法比较(实际上是 Spring MVC有更多的功能。我从未使用过它......但我读到它对做网站有很大帮助,并且很容易让我们拥有一个 REST 架构(如何使用 GWT 和 MVP 平台轻松地做一个 REST 架构?).. .
你能帮我在这些技术之间做出选择吗(注意我想在 GAE 上开发我的应用程序,我也想要手机版)?
gwt - GWT:RPC 和 MVP 以及 Place Tokenizer
我的理解是,它的工作PlaceTokenizer.getPlace(String)
是在哈希后获取 URL 中的令牌,对其进行解析,然后返回Place
带有该令牌所指对象的 a。
在我的应用程序中,我有一个资源(例如,一个视频),我通过视频的唯一 ID 对其进行标记。然后我的getPlace
方法应该取这个 id,并从服务器检索视频信息。这是正确的方法吗?
至于如何执行此操作,我能想到的唯一方法是在 上拥有我的RemoteService
权利PlaceTokenizer
,并在该getPlace
方法中正确调用。这件事让我有些犹豫。似乎这个电话更适合这个Activity
或其他地方。
这是这样做的吗?如果没有,有没有更好的方法?
events - 事件注册、发送、接收和活动/地点的顺序问题
我刚刚完成了我自己的第一个活动/地点和 MVP 示例。一切正常,但如果我改回一个地方(从另一个地方),某些事件将无法正确发送或接收。但是在“moduleLoad”这个地方被设置为默认地方一切正常。我认为如果在 moduleLoad 上启动地点/活动(通过 historyHandler = new PlaceHistoryHandler(historyMapper); historyHandler.register(placeController, eB, defaultPlace); historyHandler.handleCurrentHistory();) 或通过 placeController,它应该不会有什么不同。去(地点);, 应该是?
通过调试,我检查了事件注册、事件发送和事件接收的顺序(全部在活动的 start(...) 中执行)。问题是如果 start() 通过 goTo(place) 执行,所有接收者都不会收到事件(注册和发送工作正常)。但是,如果在 start() 之后或在 start() 中发送事件 - 在 moduleLoad 上执行,一切正常!
我的活动开始看起来像这样:
(在开始时发送此事件的用例是,我想说什么都没有选择 - 事件的有效负载为空)
问题是,如果通过 goTo 调用 start(),则既不会调用演示者也不会调用活动的 onSelected 方法。但在所有情况下(使用调试器检查),事件的注册都会在发送之前发生。我该怎么办?