`

ZK框架初步总结【一】

阅读更多

      最近经常使用ZK框架开发项目,对ZK是又爱又恨。

      先简单介绍一下ZK框架: 是个ajax框架,事件驱动框架,最大优点免去了编写js这种痛苦的工作,并且像开发桌面程序一样来开发web应用,简单明了。(虽然以后可能普遍html5,可是这还是需要一定时间的过渡)。缺点:虽然是台湾的开源框架,可是国内貌似不怎么火爆,也就是说资源比较少,意味着英语要不错,且要有专研精神。官方论坛的small talk是不错的,ZK框架的好资源基本在那里,中文的参考手册却有部分的错误(ps,参考手册的一个错误曾让我抓狂)。还有一个缺点是开源框架普遍存在的一个缺点,就是版本更新了,文档却没有更新。当改动比较大的时候,有时比较难找到对应的文档。(必须要时刻关注着)。

      

     先说下ZK的原理,在客户端第一次访问ZK web应用的时候,客户端浏览器会download的ZK框架在客户端的运行部分(ZK客户端),而ZK客户端会检测用户在客户端的动作,然后发送对应的ZK request 到服务端,而ZK框架的Au Service (更新服务)会根据ZK request来发送ZK response给ZK客户端接收,ZK客户端然后进行处理。

     在java web应用开发的时候就会感觉到就像是开发java 桌面程序一样。对web 界面上的button进行监听,当发生onClick事件的时候就发送ZK request 到服务端,服务端就自动调用对应的java 处理程序。(这点让人很happy~让人觉得前端和后台无差别开发)。

 

    技术上总结:

         ZK框架有很多组件,组件有对应的类。

         web界面的开发有两种方式,第一种 完全ZK化,界面使用ZK 提供的前端开发的语言进行开发(不用担心,ZK前端开发的语言和html非常相似,学习不难),且可以在完全ZK界面上面嵌入html和js以及其他的脚本语言。第二种是将ZK组件嵌入到html页面上面。(不怎么喜欢这种,觉得没啥意义,只是ZK框架为了多种需求而已)。

         在开发的时候主要使用的是第一种方式。

         用一个案例进行开发,比许a.zul 可是使其有对应的java处理类。a.zul 在界面中使用 属性apply 可以指定对应的java处理类A.java。 可是A.java得继承或实现ZK框架中的类,有几种方式:

        1,a.zul界面使用属性use ,a.java 继承Windows类。  

       

   a.zul 界面:

<window id="win" title="Customized Window" border="normal" 
         use="org.rjb.com.custom.CustomWin" width="300px">
                  <listbox id="list" width="200px" rows="5" 
                          model="${win.customers}" />
                 <separator />
                 <textbox id="text" value="Click to get value" 
                         width="200px"  onFocus="win.onFocusName()" />
</window>

 

 

 

     注意: window里面有一个属性use, 事件onFocus 的处理【window 的id】.【a.java的处理方法】

    

   a.java

    

public class CustomWin extends Window{
	DataSource _dr=new DataSource();
	public ListModel getCustomers(){
		return _dr.getCustomers();
	}
	//事件处理方法
	public void onFocusName(){
		final Textbox text=(Textbox) this.getFellow("text");
		final Listbox list=(Listbox)this.getFellow("list");
		text.setValue("Dear:"+(list.getSelectedItem()==null?"NULL":
			          list.getSelectedItem().getValue().toString()));
	}
}

   注意:继承Window类这种方法,可以通过this.getFellow(“ 组件id”);这种方法来得到对应的组件,且操作它。

 

   第二中方法:

   a.zul里面使用apply属性 

      

<window id="win" title="Auto wire Composer" border="normal"
	apply="org.rjb.com.custom.MyAutoWireComposer" width="300px">
	<listbox id="list" width="200px" rows="5"  />
	<separator />
	<textbox id="text" value="Click to get value" width="200px"
		forward="onFocus=onFocusName" />
</window>

    注意:apply属性使用后,对应组件的forward方法,指定事件onFocus 这里注意到事件处理必须以on开头。(至少我开发的时候,曾经因为这个出现了错误。)

     a.java对于这种方式可以有多种继承:

     早期的:
     使用GenericAutoComposer可以自动检测到组件,不用手动输入得到组件。但是要指定对应的事件处理的。

public class MyAutoWireComposer extends GenericAutowireComposer{
	private Listbox list;
	private Textbox text;
	//在界面生成以后的处理
	public void doAfterCompose(Component comp)throws Exception{
		super.doAfterCompose(comp);
		DataSource _dr=new DataSource();
		ListModel lm=_dr.getCustomers();
		list.setModel(lm);
	}
	
	public void onFocusName(){
		StringBuffer stf=new StringBuffer("Dear:");
		stf.append(list.getSelectedItem()==null?"NULL":list.getSelectedItem().getValue().toString());
		System.out.println(stf.toString());
		text.setValue(stf.toString());
	}
	

}

    近期一直使用的方法,

   GenericForwardComposer类,可是将事件也自动的绑定,不需要zul界面上指定:

  

public class LoginComposer extends GenericForwardComposer{
	private Textbox login_name;
    //事件监听方法,注意方法名 且要注意这个组件有这种事件(参考手册)
	public void onClick$loginBtn(Event event){
		sessionScope.put("login_name", login_name.getText());
		Executions.getCurrent().sendRedirect("index.zul");
	}
}

     

    以上是ZK总结的一部分,ZK资料的不齐全以及资料和版本之间差异,让我寸步难行,第一次发文,文章中也许有些错误和不对的,欢迎大家来指正。

1
0
分享到:
评论
4 楼 MyTiny 2015-04-21  
使用过ZK SpreadSheet吗?这东西收费是怎么回事儿呢?不是说开源吗?
3 楼 KimHo 2010-10-09  
总结得不错。
zk目前中文资料很少(中文书籍,目前就一本),基本靠看英文资料去掌握了
相信过多一段时间,相关中文资料会陆续浮出水面。
2 楼 every_best 2010-08-26  
zhoutaomtv 写道
我刚刚开始学习这个,你的例子给我很大的启发

ZK官方网站的small talk 很不错,基本把ZK特性都写出来了。 只是得注意文章时间和ZK版本。
1 楼 zhoutaomtv 2010-08-24  
我刚刚开始学习这个,你的例子给我很大的启发

相关推荐

    ZK框架:Ajax开发实战

    ZK框架是一个开源的Java Web框架,其主要特点是提供了丰富的用户界面组件,使得开发者可以像开发桌面应用程序一样开发Web应用程序。ZK框架的核心功能是支持MVC模式(Model-View-Controller),它利用了AJAX技术来...

    zk框架学习中文手册

    ZK框架是一个基于Java开发的轻量级Web应用框架,专为构建富客户端用户界面而设计。它将服务器端的业务逻辑与客户端的界面展示完美地融合在一起,提供了丰富的组件库,使得开发者能够轻松创建出交互性强、响应速度快...

    ZK框架开发手册

    ZK框架是一款用于Web开发的开源富客户端框架,它基于Java语言开发,并能够运行在服务器端。ZK框架允许开发者利用XUL(XML用户界面语言),通过简单的标记和脚本来创建复杂的Web界面。 首先,ZK框架的最新版本为...

    ZK框架 中文技术文档.rar

    ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 ...

    2022年ZK框架学习总结定义.pdf

    2022年ZK框架学习总结定义.pdf

    2021年ZK框架学习总结汇编.pdf

    2021年ZK框架学习总结汇编.pdf

    2020年ZK框架学习总结汇编.pdf

    2020年ZK框架学习总结汇编.pdf

    ZK框架学习总结终稿.pdf

    ZK框架是一个基于Java的轻量级Web应用框架,专注于简化用户界面的开发,尤其在构建富客户端(Rich Client)的Web应用时表现出色。它以其独特的ZUML(ZK User Interface Markup Language)语法,使得开发者无需深入...

    zk框架demo

    ZK框架是一款高效且易用的Java Web开发框架,它专为构建富客户端(Rich Client)的Web应用而设计。ZK框架的独特之处在于它结合了Ajax技术与桌面应用的交互体验,使开发者能够通过简单的代码实现复杂的用户界面。在...

    ZK资料学习zk框架的助手

    ZK,全称为ZooKeeper,是由Apache软件基金会开发的一个分布式协调服务框架,它为分布式应用提供一致性服务,包括命名服务、配置管理、集群管理、分布式锁等。本资料包是针对ZK框架的学习资源,旨在帮助用户深入理解...

    zk入门.web框架

    ZK 是一个基于 Java 的轻量级Web框架,专门用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件和事件处理机制,使得开发者能够轻松创建交互式的Web应用。本篇文章将深入探讨ZK框架的基本概念、开发环境的...

    关于zk框架的基于java的web学生管理系统开发

    网络上关于zk框架的资源还是很少的,我学习这个碰到了不少的问题,不过还是慢慢的解决了,上传我的运用zk框架基于java的一个web学生管理系统开发给大家参考,希望能对学习zk框架的朋友有一点点的帮助。

    zk框架入门学习

    zk框架的入门介绍,刚开始学习和接触zk框架的伙伴可以看看,不错的资料

    ZK框架:Ajax开发实战3rar

    ZK框架 : Ajax开发实战1.rar

Global site tag (gtag.js) - Google Analytics