`

GWT Hostpage 模块文档

阅读更多

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需要全部加载到页面,其他模块才能使用

分享到:
评论
2 楼 yongyuan.jiang 2007-12-27  
已经全面使用在大项目中,全新的页面开发模式,更具体使用:
http://gwts.group.iteye.com/group/blog/148162
1 楼 aibozeng 2007-12-18  
兄弟: 你这个模板开发进展如何了?

相关推荐

    GWT-api文档

    3. **模块化**:GWT项目可以被组织成模块,每个模块包含相关的类和资源,这有助于代码管理。 4. **自动跨浏览器兼容**:GWT编译器会生成跨浏览器的JavaScript代码,确保应用在不同浏览器上表现一致。 5. **异步...

    GWTAPI文档 + GWTEXT文档 + GWTEXTUX文档

    1. **模块系统**:GWT项目基于模块化结构,每个模块对应一个.gwt.xml配置文件,定义了模块的依赖和编译选项。 2. **编译过程**:GWT将Java代码转换为优化的JavaScript,这涉及到类型安全的编译和优化,以确保在...

    GWT API帮助文档

    **GWT(Google Web Toolkit)API 帮助文档** Google Web Toolkit(GWT)是一个开源的Java开发框架,用于构建高性能的、基于浏览器的应用程序。GWT将Java代码编译为JavaScript,允许开发者利用Java的强大功能和生态...

    GWT-API 帮助文档

    1. **GWT模块和项目结构**:解释如何设置GWT项目,包括构建路径、源代码组织、模块配置文件(gwt.xml)等。 2. **Widget库**:详述GWT提供的各种UI组件,如Button、TextBox、Panel等,以及如何在HTML布局中使用它们...

    SmartGWT 快速开发文档(Quick Start Guide)

    - **完整的 MVC 架构**:SmartGWT 内置了 Model-View-Controller (MVC) 架构模式的支持,这有助于开发者构建更加模块化和易于维护的应用程序。 - **数据绑定**:框架支持数据绑定功能,使得 UI 元素与后端数据之间的...

    gwt文档整理

    本文档整理涵盖了GWT的基础知识、安装步骤、开发指南和技术文档,旨在为GWT的学习者提供全面且深入的理解。 1. **GWT简介** GWT的核心理念是利用Java语言进行Web应用开发,然后通过编译器将Java代码转换为优化过的...

    GWT 开发和部署文档

    3. **设置GWT模块**:在src目录下创建GWT模块,通常是一个以`.gwt.xml`为扩展名的文件,这个文件定义了模块所需的资源,包括引用的JavaScript库(标签)、样式表(标签)和继承的包(标签)。 4. **集成EXTJS**:若...

    GWT一个页面包含多个模块时出现的问题

    标题 "GWT一个页面包含多个模块时出现的问题" 指的是在使用Google Web Toolkit (GWT) 开发Web应用时,遇到的当一个页面需要加载多个模块时可能产生的技术挑战。GWT是一种用于构建高性能JavaScript应用程序的Java框架...

    SmartGwt学习文档

    在实际项目中,SmartGwt通常与MVC(Model-View-Controller)设计模式结合使用,帮助开发者组织代码,实现良好的模块化和可维护性。同时,SmartGwt也兼容其他流行的开发框架和库,如Spring、Hibernate等,方便整合到...

    ext gwt的api文档

    gxt(又叫做ext gwt)是GWT的一个框架,该框架完全copy了Extjs的用户界面,本文档是gxt的api文档,并且是chm格式的

    GWT学习文档

    **GWT技术文档** Google Web Toolkit (GWT) 是一个开放源码的开发框架,它允许开发者使用Java语言来编写客户端的Web应用。GWT通过编译Java代码为高效的JavaScript,使得开发人员能够利用Java的强大功能和生态系统的...

    GWT技术文档详细解说

    本技术文档将详细解释GWT的基本概念、安装过程、工程创建方法以及核心功能。 ### 第一章 GWT 简介 1.1 **GWT的定义** GWT(Google Web Toolkit)是一个让Java开发者能够利用Java语言编写前端Web应用的工具集。它...

    GWT开发文档

    ### GWT开发文档详解 #### GWT概览 Google Web Toolkit (GWT),作为一款由谷歌推出的开源框架,旨在简化并加速复杂的JavaScript前端应用程序的构建与维护过程。它通过允许开发者使用熟悉的Java语言进行编码,随后...

    Gwt开发文档

    9. **模块化系统**: GWT项目通常被组织成模块,每个模块可以包含一组相关的类和资源,便于管理和部署。 10. **开发模式与生产模式**: GWT提供两种运行模式:开发模式(Development Mode)下,开发者可以直接在...

    GWText 文档

    GWText 文档是为用户提供的详尽学习资源,旨在帮助用户更好地理解和利用该软件的各项特性。在这个GWText.chm文件中,包含了关于GWText的所有关键知识点,涵盖了从基本操作到高级特性的全方位指南。 1. **基础功能**...

    GWT ExtGWT 培训文档Gxt培训

    ExtGWT 提供了类似于桌面开环境的扩展组件包,GWT 的程序员可以轻松的使用他们就像 使用 GWT 组件一样。除此之外,ExtGWT 还具有强大的本地操作和远程调用的特性,同时 满足开发企业级应用程序的 MVC 架构需求

Global site tag (gtag.js) - Google Analytics