【问题标题】:MVP in GWT. Complicated ViewsGWT MVP。复杂的视图
【发布时间】:2011-10-28 07:39:15
【问题描述】:

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

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

DetailsPanel 又具有这种结构

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

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

谢谢,希望有人帮助我。

【问题讨论】:

标签: java gwt mvp


【解决方案1】:

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

在框架级别,您可以拥有一个实现 ValueChangeHandler 的类,并使用 History.addValueChangeHandler(controller); 将其设置在历史上,假设控制器正在实现值更改处理程序

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

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

现在我们来谈谈框架的第二部分,presenter和view的实现。我假设 RootPanel 是所有 UI 小部件的容器。您可以为每个操作创建单独的演示者

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

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

现在谈谈您的具体问题

  1. MVP 将是你最好的选择 MVP here 的文章很不错
  2. 我认为没有理由使用 2 个活动管理器,只要这些小部件的容器相同
  3. EventBus 是理想的选择。如果您必须通过事件传递数据,主类中的静态字段等会话变量将满足您的目的
  4. 我需要更多详细信息,具体说明您希望向哪个经理添加内容

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多