The module XML file
位置:src/com.hellomvp/HelloMVP.gwt.xml
内容:
模块:helloMVP
继承User
继承Standard theme
继承Activity
:Presenter of MVP,依赖于Place模块,本质是一个widget上的事件处理引擎。
继承Place
:View States of MVP
entry-point:com.hellomvp.client.HelloMVP
replace-with
:对com.hellomvp.client.ClientFactory接口采用com.hellomvp.client.ClientFactoryImpl的默认注入
源client
源shared
The Host Page
位置:war/hellomvp.html
内容:标准内容
meta tag
css: hellomvp
.css
js: helloMVP
/helloMVP
.nocache.js
The Application Style Sheet
位置:war/hellomvp.css
内容:...
The Entry Point Class
位置:src/包.client/项目名.java
内容:
- private属性:一个最上层组件组件--SimplePanel appWidget
,一个初始的ui状态--Place defaultPlace
;
- onModuleLoad():
- 通过GWT建立ClientFactory
对象,该工厂是对整个client端一系列对象的创建负责的抽象工厂(Abstract factory pattern
),所建对象包括eventBus,placeController,helloView,goodbyeView;ClientFactory接口中暴露了这些client对象的getter,ClientFactoryImpl里实现了对这些对象的new。
- 使用clientFactory对象作为参数,new出一个AppActivityMapper
对象。
- 使用activityMapper对象和eventBus对象作为参数,new出一个ActivityManager
对象;ActivityManager类是gwt的acitvity模块提供的框架类,它在从事件总线上捕获PlaceChangeEvent或者PlaceChangeRequestEvent后,将根据活动Mapper中提供的place与activity的关系,找到相应的活动来初始化之,并在widget准备好之后调用它的start方法。
-
使用
appWidget
作为参数调用activityManager的setDisplay
方法,该方法将传入的widget作为main widget以及event的接受者。
-
通过GWT建立AppPlaceHistoryMapper
对象。
-
使用historyMapper对象作为参数,new出一个PlaceHistoryHandler
对象;PlaceHistoryHandler类是gwt的Place模块可提供的框架类,由它来处理浏览器的前进后退以及bookmark等操作。
-
使用
placeControler,eventBus,
defaultPlace
作为参数,调用
historyHandler的register
方法,该方法初始化整个
historyHandler。
-
将
appWidget
加入到RootPanel
中,RootPanel类是gwt的user模块提供的顶层容器类。
-
调用
historyHandler的handleCurrentHistory
方法,该方法使得app进入初始ui状态,即默认place
The MVP Configuration
位置:src/com.hellomvp.client.mvp
内容:
-
ActivityMapper
<|--
AppActivityMapper
:实现了Activity getActivity(Place place)
,从而完成从Place到Activity的单向映射配置。
-
PlaceHistoryMapper
<|--
AppPlaceHistoryMapper
: 继承gwt提供的框架接口,该接口定义了从Token到Place的双向映射。继承之后不用实现具体映射方法,可以通过@WithTokenizers
来实现映射配置。
The Place
位置:src/com.hellomvp.client.place
内容:
-
Place
<|--
GoodbyePlace
:
- 包含一个goodbyeName
属性以及它的getter方法,属性通常用来保存ui的状态值;
- 一个以String类型的token为参数的构造函数,token通常包含所有属性的值;
- 一个Tokenizer内部类,该类实现了PlaceTokenizer
<GoodbyePlace
>接口,即实现了从Place到Token的双向映射。该Tokenizer内部类会在AppPlaceHistoryMapper
接口中被注册到映射配置中。
-
Place
<|--HelloPlace
:
- 包含一个helloName
属性以及它的getter方法,属性通常用来保存ui的状态值;
- 一个以String类型的token为参数的构造函数,token通常包含所有属性的值;
- 一个Tokenizer内部类,该类实现了PlaceTokenizer
<HelloPlace
>接口,即实现了从Place到Token的双向映射。该Tokenizer内部类会在AppPlaceHistoryMapper
接口中被注册到映射配置中。
The Activity
位置:src/com.hellomvp.client.activity
内容:
-
AbstractActivity
<|--GoodbyeActivity
:一个简单的activity,对应的GoodbyeView
中不存在需要它实现的presenter,所以它只要负责start时对view的展现,不涉及presenter
- 提供一个由GoodbyePlace
和ClientFactory
作为参数的构造函数,这样可以从place得到view的当前状态。
- 实现
AbstractActivity
框架类中声明的start
方法,该方法中对
GoodbyeView
对象会进行一系列操作。
-
AbstractActivity
<|--HelloActivity
: 同时需要实现HelloView.Presenter接口中定义的业务方法
- 提供一个由HelloPlace
和ClientFactory
作为参数的构造函数,这样可以从place得到view的当前状态。
- 实现
AbstractActivity
框架类中声明的start
方法,该方法中对
HelloView
对象会进行一系列操作,包括把this作为presenter参数赋值给helloView.
-
覆盖了
AbstractActivity
框架类中声明的mayStop
方法,增加了在当前activity结束时给出提示的功能。
- 实现HelloView.Presenter接口中定义的goto(Place place)
方法。
The UI
位置:src/com.hellomvp.client.ui
内容:
-
GoodbyeView<|--GoodbyeViewImpl
:一个简单的view,SimplePanel里包含一个html span,暴露的业务方法(声明在interface里)的实现是为span设置innerText值;
-
HelloView<|--HelloViewImpl
: 一个使用Presenter和uibind(通过ann来组装ui)的view,接口里定义了span的设置方法外加presenter的设置方法,以及presenter的接口定义:
- 2个@UiField
属性:一个SpanElement
和一个Anchor
- 1个绑定到Anchor
的@UiHandler
方法:调用prensenter.goto
方法。
- HelloViewImpl.ui.xml:一个以ui:UiBinder为root element的xml文件,是对@UiField组件的定义
UI是将View和Presenter进行组合,上述View和Presenter接口都不需要继承gwt的特定接口。
分享到:
相关推荐
### GWT MVP 开发框架详解 #### 一、引言 Google Web Toolkit (GWT) 是一款由 Google 开发的开源 Java 框架,它允许开发者使用 Java 和其他高级语言来构建复杂的 web 应用程序,并将其编译成浏览器可以理解的 ...
2. **模块化(GWT Module)**:每个GWT项目都始于一个`.gwt.xml`模块文件,它定义了项目的配置信息,包括使用的库、本地化设置、主题等。 3. **Java到JavaScript编译**:GWT的编译过程将Java源代码转化为优化的...
GWT,全称为Google Web Toolkit,是Google推出的一款开源JavaScript开发框架,允许Java开发者使用Java语言来编写Web应用。GWT通过编译器将Java代码转换为高效的JavaScript,从而在客户端浏览器上运行。这个“GWT入门...
此外,MVP(Model-View-Presenter)模式是GWT中推荐的架构模式,它分离了用户界面、视图逻辑和业务逻辑。 **5. RPC通信** GWT提供了Remote Procedure Call (RPC)机制,使得客户端和服务器之间可以进行安全的数据...
1. **GWT-RPC与STRUTS2**:GWT应用通常使用GWT-RPC与服务器通信,但在STRUTS2中,可以使用Action和Interceptor来处理GWT-RPC请求,实现服务端的业务逻辑。 2. **JSON数据交换**:另一种常见的结合方式是通过JSON进行...
标题中的"cypal.studio.for.gwt-2.alpha"明确指出了这款插件的主要目标——为GWT的2.0版本提供支持。这意味着它包含了针对GWT 2.0特性和功能的优化,如更先进的UI设计工具、增强的代码生成和调试功能等。 描述中...
2. **自动编译**:GWT将Java代码编译为优化过的JavaScript,这使得应用程序在浏览器中的运行效率得到提高,并且能够支持各种浏览器,包括IE、Firefox、Chrome等。 3. **开发工具**:GWT提供了一个强大的集成开发...
2. **安装GWT**: - 不需要传统的安装步骤,只需解压缩下载的文件至所需位置。 - 例如,可以将文件解压至 `D:\gwt` 文件夹中。 - 设置系统环境变量,在PATH变量中添加GWT的路径。 3. **配置Eclipse开发环境**: -...
安装完成后,你就可以在Eclipse中创建新的GWT项目,利用GWT的特性,如MVP模式(Model-View-Presenter)、RPC(Remote Procedure Call)通信、以及丰富的用户界面组件库等,进行Web应用的开发。 总的来说,这个离线...
2. **MVP模式**:Model-View-Presenter(MVP)是GWT推荐的开发模式。模型层处理业务逻辑,视图层负责用户界面展示,而presenter作为模型和视图之间的桥梁,协调两者通信。这种模式有利于代码组织和测试。 3. **国际...
gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2gxt-2.1.1-gwt2
这个教程可能专注于介绍如何在GWT中实现MVP模式,帮助开发者理解如何划分模型、视图和呈现器的角色,以及它们之间的协作方式。通过这个实例,开发者可以学习到如何创建一个简单的“Hello, World”应用,同时了解到...
在Stata中,我们可以使用第三方命令,如`gwt2dta`,来导入GWT文件。例如,如果.GWT文件名为`myweights.gwt`,转换命令可能如下: ```stata net install gwt2dta, from...
Struts2和Google Web Toolkit(GWT)是两种在Java Web开发中广泛使用的框架。Struts2是一个MVC(Model-View-Controller)框架,它提供了强大的动作调度、拦截器和结果映射等功能,用于构建可维护性和扩展性良好的...
Struts2和GWT是两种在Java开发领域中广泛使用的框架,它们分别专注于Web应用程序的MVC(模型-视图-控制器)架构和富客户端应用的构建。这篇博文的标题"浅论struts2与gwt"暗示了作者将探讨这两个技术的核心特性、应用...
Gwt中文手册,GWt入门Gwt中文手册,GWt入门Gwt中文手册,GWt入门
2. **下载Eclipse**:获取最新版本的Eclipse IDE,它是GWT开发的推荐IDE。Eclipse提供GWT插件,使得集成GWT变得简单。 3. **安装GWT插件**:在Eclipse中,通过Help > Install New Software,选择GWT插件的更新站点...