1 简介
Gwt将不同模块页面生成到相关文件及页面,使用IFrame方式将各个模块组合在在HTML页面中。
Hostpage尝试在页面中创建模块、调用模块服务、销毁模块,从而页面模块真正组件化。
2 功能、场景流程
组件注册与构造流程
a.注册组件构造工厂
//a1.查找组件构造工厂 //hostpage已封装
b.创建组件
c.注册组件
d.查找组件
e.移除组件
Hostpage事件订阅流程
a. 订阅Hostpage事件
b. 触发Hostpage事件
3 核心技术、Demo
3.1 组件获得hostpage服务
HostpageServiceFactory.getHostPageService()
3.2 创建构造工厂
class MsgServiceFactory implements IComponentFactory{
public void create(String compType, String compId, final Element
element,
String[] args) {
if(!compTypeName.equals(compType))return;
MsgComponent component = new MsgComponent(args);//创建MsgComponent组件
ModuleRootPanel container = ModuleRootPanel.get(element);
container.add(component);//获得panel并add组件
exporter exporter = (exporter) GWT.create(exporter.class);
HostpageServiceFactory.getHostPageService().registerComponent(compType,
compId, exporter.doExport(component));//将组件导出,并注册到hostpage
}
}
3.3 注册构造工厂
componentAFactory factory = new componentAFactory();
hostpageService.registerComponentFactory("moduleName",
IComponentFactory factory);
3.4 创建组件
HostpageServiceFactory.getHostPageService().createComponent(
"compType", "componentId", element, args);
// compType: 模块名
//componentId : 组件id
//element : 要添加的element,组件添加到此element内
//args : 组件构造String[]参数
3.5 查找组件
HostpageServiceFactory.getHostPageService().findComponent(compType,
compId);
//compType : 模块名
//compId : 组件id
3.6 删除组件
HostpageServiceFactory.getHostPageService()
.removeComponent(compType,
compId );
//compType : 模块名
//compId : 组件id
3.7 订阅hostpage事件
hostpage.subscribe("com.macaufly.gwt.loginuser.LoginUser",
"LoginUserService","LOGIN",hostpageListener);
//参数1 : moduleName
//参数 2 :componentId
//参数 3 : 事件类型,如LOGIN事件
//参数 4 : 事件 new HostpageListner
注意:前三参数为可选参数,如下:
1.以上例子为LoginUser模块、id为LoginUserService、事件类型为LOGIN时触发hostpageListener
事件。
2.subscribe("com.macaufly.gwt.loginuser.LoginUser","LoginUserService",null,hostpageListner)
Arg3为null,此方法为LoginUser模块、id为LoginUserService的全部事件,将触发
hostpageListener
3.subscribe("com.macaufly.gwt.loginuser.LoginUser",null,"
LOGIN",hostpageListner)
Arg2为null,此方法为任意LoginUser模块、事件类型为LOGIN的全部事件,将触发hostpageListener
4.subscribe(null,"LoginUserService"," LOGIN",hostpageListner)
Arg1为null,此方法为任意模块、id名为LoginUserService、事件类型为LOGIN的全部事件,将触发
hostpageListener
3.8 触发hostpage事件
HostpageServiceFactory.getHostPageService().fireEvent(GWT.getModuleName(),compId,
"LOGIN","user has been login", exporter.doExport(user));
//GWT.getModuleName : 模块名
//compId : 组件id
//LOGIN : 事件种类
//user has been login : 触发事件的消息
//exporter.doExport(user) : 将复杂数据导出成JavaScriptObject传出
3.9 HostpageListener 如何编写
HostpageListener hostpageListener = new HostpageListener() {
public void onEvent(String componentType, String componentId,
String category, String message, JavaScriptObject detail)
{
if (category.equals("LOGIN")) {
Window.alert("登录事件触发");
}
else if (category.equals("LOGOUT")) {
Window.alert("退出事件触发");
}
}
};
//category : 事件类型,如LOGIN,LOGOUT
//detail : 复杂的对象,JavaScriptObject,需要Exporter import
3.10
3.11
4 待完善问题
1. hostpage js加载问题 :hostpage需要全部加载到页面,其他模块才能使用
分享到:
相关推荐
3. **模块化**:GWT项目可以被组织成模块,每个模块包含相关的类和资源,这有助于代码管理。 4. **自动跨浏览器兼容**:GWT编译器会生成跨浏览器的JavaScript代码,确保应用在不同浏览器上表现一致。 5. **异步...
1. **模块系统**:GWT项目基于模块化结构,每个模块对应一个.gwt.xml配置文件,定义了模块的依赖和编译选项。 2. **编译过程**:GWT将Java代码转换为优化的JavaScript,这涉及到类型安全的编译和优化,以确保在...
**GWT(Google Web Toolkit)API 帮助文档** Google Web Toolkit(GWT)是一个开源的Java开发框架,用于构建高性能的、基于浏览器的应用程序。GWT将Java代码编译为JavaScript,允许开发者利用Java的强大功能和生态...
1. **GWT模块和项目结构**:解释如何设置GWT项目,包括构建路径、源代码组织、模块配置文件(gwt.xml)等。 2. **Widget库**:详述GWT提供的各种UI组件,如Button、TextBox、Panel等,以及如何在HTML布局中使用它们...
- **完整的 MVC 架构**:SmartGWT 内置了 Model-View-Controller (MVC) 架构模式的支持,这有助于开发者构建更加模块化和易于维护的应用程序。 - **数据绑定**:框架支持数据绑定功能,使得 UI 元素与后端数据之间的...
本文档整理涵盖了GWT的基础知识、安装步骤、开发指南和技术文档,旨在为GWT的学习者提供全面且深入的理解。 1. **GWT简介** GWT的核心理念是利用Java语言进行Web应用开发,然后通过编译器将Java代码转换为优化过的...
3. **设置GWT模块**:在src目录下创建GWT模块,通常是一个以`.gwt.xml`为扩展名的文件,这个文件定义了模块所需的资源,包括引用的JavaScript库(标签)、样式表(标签)和继承的包(标签)。 4. **集成EXTJS**:若...
标题 "GWT一个页面包含多个模块时出现的问题" 指的是在使用Google Web Toolkit (GWT) 开发Web应用时,遇到的当一个页面需要加载多个模块时可能产生的技术挑战。GWT是一种用于构建高性能JavaScript应用程序的Java框架...
在实际项目中,SmartGwt通常与MVC(Model-View-Controller)设计模式结合使用,帮助开发者组织代码,实现良好的模块化和可维护性。同时,SmartGwt也兼容其他流行的开发框架和库,如Spring、Hibernate等,方便整合到...
gxt(又叫做ext gwt)是GWT的一个框架,该框架完全copy了Extjs的用户界面,本文档是gxt的api文档,并且是chm格式的
**GWT技术文档** Google Web Toolkit (GWT) 是一个开放源码的开发框架,它允许开发者使用Java语言来编写客户端的Web应用。GWT通过编译Java代码为高效的JavaScript,使得开发人员能够利用Java的强大功能和生态系统的...
本技术文档将详细解释GWT的基本概念、安装过程、工程创建方法以及核心功能。 ### 第一章 GWT 简介 1.1 **GWT的定义** GWT(Google Web Toolkit)是一个让Java开发者能够利用Java语言编写前端Web应用的工具集。它...
### GWT开发文档详解 #### GWT概览 Google Web Toolkit (GWT),作为一款由谷歌推出的开源框架,旨在简化并加速复杂的JavaScript前端应用程序的构建与维护过程。它通过允许开发者使用熟悉的Java语言进行编码,随后...
9. **模块化系统**: GWT项目通常被组织成模块,每个模块可以包含一组相关的类和资源,便于管理和部署。 10. **开发模式与生产模式**: GWT提供两种运行模式:开发模式(Development Mode)下,开发者可以直接在...
GWText 文档是为用户提供的详尽学习资源,旨在帮助用户更好地理解和利用该软件的各项特性。在这个GWText.chm文件中,包含了关于GWText的所有关键知识点,涵盖了从基本操作到高级特性的全方位指南。 1. **基础功能**...
ExtGWT 提供了类似于桌面开环境的扩展组件包,GWT 的程序员可以轻松的使用他们就像 使用 GWT 组件一样。除此之外,ExtGWT 还具有强大的本地操作和远程调用的特性,同时 满足开发企业级应用程序的 MVC 架构需求