`

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帮助文档

    gwt api帮助文档,英文原文,网页格式的

    GWT-api文档

    公司以前的老项目用到了 GWT 一般的话现在想新项目都很少见这种东西了,主要给后台人员只需要写JAVA代码实现页面UI编写,也就是用java代码写前端的页面。

    GWT-API 帮助文档

    GWT-API 帮助文档 学习GWT用到的帮助文档

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

    跟随 SmartGwtEE 2.3 一齐发布的官方开发文档,详细介绍了 SmartGwt 的使用流程,是开发人员的首选文档!

    GWTAPI文档 + GWTEXT文档 + GWTEXTUX文档

    这些都是 学习GWT用到的帮助文档,主要介绍了gwt的核心包,gwtext包,gwtextux包的要使用方法

    ext gwt的api文档

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

    SmartGwt学习文档

    SmartGwt client RIA

    GWT 开发和部署文档

    GWT 基本入门和开发,部署,愿与大家分享!

    GWT技术文档详细解说

    比较不错的关于GWT的技术文档。内容较基础~

    gwt文档整理

    包含gwt简介、安装流程、开发指南、技术文档、用GWT实现基于Ajax的Web开发等

    GWT学习文档

    Google Web Toolkit的缩写,有了 GWT可以使用 Java 编程语言编写 AJAX 前端,然后 GWT 会交叉编译到优化的JavaScript 中,而 JavaScript 可以自动在所有主要浏览器上运行。GWT允许开发人员使用 Java 编程语言快速...

    gwt学习帮助文档资料.doc

    gwt.doc gwt.doc gwt.doc gwt.doc gwt.doc gwt.doc gwt.doc gwt.doc gwt.doc gwt.doc gwt.doc gwt.doc

    gwt入门-gwt从这里开始

    doc(文档目录,开发文档和Java API文档) samples(示例代码目录,非常有名的KitchenSink示例代码即在此目录中) about.html about.txt applicationCreator.cmd benchmarkViewer.cmd COPYING COPYING...

    GWT ExtGWT 培训文档Gxt培训

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

    GWText 文档

    GWText 学习GWText用到的帮助文档

    GWT开发文档

    Eclipse安装GWT,Eclipse中创建GWT项目。

    GWT入门及用例文档

    Ajax 被用于创建更加动态和交互性更...Google Web Toolkit (简称GWT) 是 Google 推出的 Ajax 应用开发包,GWT 支持开发者使用Java 语言开发 Ajax 应用。本文中作者将介绍如何使用 GWT 开发 Ajax 应用的基本方法和步骤。

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

    博文链接:https://silentlakeside.iteye.com/blog/177882

    Gwt开发文档

    GWT开发文档,欢迎使用,java开发技术员开发UID不是梦想。

Global site tag (gtag.js) - Google Analytics