有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

GWT中的JavaMVP。复杂视图

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

控制按钮提供了在ContentPanel(仅包含数据的常规CellTable)和DetailsPanel(此处我们可以编辑特定条目,这不是模式对话框)之间切换的功能

反过来,DetailsPanel具有这种结构

Button1、Button2、Button3应该只处理DetailsPanel和change ActionPanel(ActionPanel是一种向导,所以在点击Button1、Button2或Button3后,其内容应该全部更改),但是按钮Save和Cancel应该将我们导航回ListWidget

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

谢谢,希望有人能帮助我


共 (1) 个答案

  1. # 1 楼答案

    我在回答你的问题,首先简单解释一下,然后逐条回答你的问题

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

    任何与History.newItem("NameOfAction")一起放入历史记录的新项都将调用ValueChangeHandler的实现,在本例中,它将是controller 现在在ValueChangeHandler的实现中,您可以

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

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

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

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

    现在谈谈你的具体问题

    1. MVP将是你在这里的最佳选择关于MVP的文章非常好
    2. 我不认为有理由使用两个活动管理器,只要这些小部件的容器是相同的
    3. EventBus将是理想的选择。如果必须通过事件传递数据,会话变量(如主类中的静态字段)将满足您的需求
    4. 我需要更多关于你想在哪个经理身上放什么的细节

    希望这有帮助