java - GWT 中的 MVP。复杂的观点

标签 java gwt mvp

有关于在复杂 View 上使用 mvp 的问题。 假设,我们有一些带有样板设计的小部件 (ListWidget),如下所示:

控制按钮提供了在 ContentPanel(只是带有数据的常规 CellTable)和 DetailsPanel(在这里我们可以编辑特定条目,这不是模态对话框)之间切换的功能

DetailsPanel 反过来也有这个结构

Button1、Button2、Button3 应仅处理 DetailsPanel 并更改 ActionPanel(ActionPanel 是某种向导,因此其内容应在 Button1、Button2 或 Button3 单击后完全更改),但 Buttons Save 和 Cancel 应将我们导航回 ListWidget .

  1. 我应该使用什么方法来实现所描述的功能?
  2. 我是否应该在主上下文中使用 2 个不同的 ActivityManager 和其中一个?
  3. 如何管理消息并将消息广播到 ListWidget 上的相关面板? (是否可以将 Handlers 放在 Views 中并在某些操作上将事件推送到内部 eventBus 中? 例如,当我在 DetailsPanel 中保存项目时,PreviewPanel 应该发生变化并且该项目应该集中在 CellTable 中;等等)
  4. 如果我应该对两个不同的 ActivityManager 使用模式,我应该如何处理 Activity 更改行为?

谢谢,希望有人能帮助我。

最佳答案

我正在回答你的问题,首先是一个简短的解释,然后逐条回答你的问题。

在框架级别,您可以有一个实现 ValueChangeHandler 的类,并使用 History.addValueChangeHandler(controller); 在 History 上设置它,假设 Controller 正在实现值更改处理程序

您将使用 History.newItem("NameOfAction") 放入历史记录中的任何 newItem 都会调用 ValueChangeHandler 的实现,在这种情况下将是 controller 现在,在 ValueChangeHandler 的实现中,您可以

String token = event.getValue();
if (token.equals("NameOfAction")) {
    Call Appropriate presenter
}

下面说说第二部分framework、presenter和view的实现。我假设 RootPanel 是所有 UI 小部件的容器。您可以为每个操作创建单独的演示者

presenter = new ActionPresenter(rpc, eventbus, new ActionView())

请注意,我正在创建一个 View 并将其传递给演示者,演示者获取数据并使用数据构建 View 。您稍后可以将容器传递给演示者以在 UI 上显示整个内容。

现在谈谈你的具体问题

  1. MVP 将是您最好的选择 关于 MVP 的文章 here还不错
  2. 我看不出有理由使用 2 个 Activity 管理器,只要这些小部件的容器相同
  3. EventBus 是理想的选择。如果您必须通过事件传递数据,主类中的静态字段等 session 变量将满足您的目的
  4. 我需要更多详细信息,具体说明您想在哪位经理中放置什么

希望这对您有所帮助!

关于java - GWT 中的 MVP。复杂的观点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926402/

相关文章:

asp.net-mvc - 为什么微软为 ASP.NET 选择 MVC?

java - Activity 中的 GWT Rest 回调始终为空/null

java - 如何使用 littleproxy/netty 缓存流量?

java - 每次在 NetBeans 上运行时,用户界面上的对象都会改变外观。为什么?

java - 向 Web 服务 Opengts 发送 XML 请求以从 Android 应用程序登录时出错

GWT - GXT - 如何获取单选按钮值?

java - 加载位于加载器内的 Java 代理 JAR

java - 如何阻止已经登录的用户从其他浏览器登录

java - 使用 GWT 项目依赖项编译 GWT 项目

c# - 关于 model-view-presenter (C#) 的一般性问题,模型应该知道 presenter 吗?