如何使用gwt mvp创建母版页或所有视图共有的页面

如何使用gwt mvp创建母版页或所有视图共有的页面,gwt,gwt-mvp,Gwt,Gwt Mvp,嗨,我是GWT MVP模式的新手。我来自asp.net背景,目前正在从事GWT工作,我被要求创建一个母版页,该母版页包含所有视图共有的菜单项。最初,我使用和创建了一个示例mvp项目,其中有从一个视图到另一个视图的导航。如何保持一个视图不变,并根据单击的菜单项不断更改其他视图。请帮助将屏幕划分为两个或多个区域,并为每个区域分配专用的ActivityMapper和ActivityManager。例如,一个区域可以是带有MenuActivityManager的“菜单”,另一个区域可以是带有BodyAc

嗨,我是GWT MVP模式的新手。我来自asp.net背景,目前正在从事GWT工作,我被要求创建一个母版页,该母版页包含所有视图共有的菜单项。最初,我使用和创建了一个示例mvp项目,其中有从一个视图到另一个视图的导航。如何保持一个视图不变,并根据单击的菜单项不断更改其他视图。请帮助

将屏幕划分为两个或多个区域,并为每个区域分配专用的ActivityMapper和ActivityManager。例如,一个区域可以是带有MenuActivityManager的“菜单”,另一个区域可以是带有BodyActivityManager的“正文”

这里有一个很好的解释:


请注意,使用此方法既有优点也有缺点。浏览器呈现标准html需要毫秒。创建一个小部件主菜单并将其包含在每个视图中(最好是使用UiBinder)可能比处理两个活动管理器更容易。

您提到的文章来自GWT中添加MVP支持之前。它很好地解释了这个概念,但是实际的实现没有那么有用。要继续,请查看有关活动的GWT文档:。在那里你也会找到解决问题的方法。简而言之,请查看
活动管理器
。这将管理所有活动。在活动管理器上,您设置了一个小部件,该小部件对于所有活动都是静态的。这个小部件必须有一个方法
setWidget
(实际上它必须实现
AcceptsOneWidget
)。在每个活动实现中,您都通过
start
方法获得此小部件。通过在start方法中使用该活动的特定视图调用setWidget,可以设置活动特定视图。所有这些都描述得非常简单,但是如果您阅读了上述文档,您应该会了解这个概念。

如果您使用的是
UiBinder
,您的
ui.xml
文件应该是这样的

 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
  xmlns:g="urn:import:com.google.gwt.user.client.ui">

<ui:style>
</ui:style>

<g:DockLayoutPanel unit="EM">
    <g:north size="4">
        //Add Logo, menus or what you want to be displayed for all the pages 
    </g:north>
    <g:center>
        //Add code for your desired UI. In java code you change the UI by this "flowpanel"
        For eg: <g:FlowPanel ui:field="flowpanel" />
    </g:center>
</g:DockLayoutPanel>
其中
“4”
是面板的大小,您可以更改它

像这样
dockLayoutPanel.addWest(您需要的任何小部件,“4”)//西板
addEast(您需要的任何小部件,“4”)//东面板
addSouth(您需要的任何小部件,“4”)//南面板

我希望你现在知道了

    final DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Style.Unit.EM);
    dockLayoutPanel.addNorth(any widget you need, "4"); //NorthPanel
    dockLayoutPanel.add(any widget you need);   //CenterPanel