最近经常使用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资料的不齐全以及资料和版本之间差异,让我寸步难行,第一次发文,文章中也许有些错误和不对的,欢迎大家来指正。
分享到:
相关推荐
ZK框架学习总结.pdf
ZK框架是一个用JAVA实现的简单但是功能强大的表现层框架。它包括了一个基于Ajax的事件驱动引擎、这也是它的最大特色。可以做到没有JavaScript,只通过ZUML(ZK User Interface Markup Language)这种标识语言即可做到...
ZK框架学习总结.doc zk的安装,zk eclipse
ZK框架学习总结.docxZK框架学习总结.docxZK框架学习总结.docxZK框架学习总结.docxZK框架学习总结.docxZK框架学习总结.docx
zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架
ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 ...
ZK框架学习总结知识.pdf
ZK框架学习总结终稿.pdf
2022年ZK框架学习总结定义.pdf
2021年ZK框架学习总结汇编.pdf
2020年ZK框架学习总结汇编.pdf
ZK框架开发手册 ZK 7.0.5 Developer's Reference.pdf ZK框架开发手册 ZK 7.0.5 Developer's Reference.pdf
水电费水电费水电费水电费水电费水电费水电费是的发送到发送到方式的方式的
网络上关于zk框架的资源还是很少的,我学习这个碰到了不少的问题,不过还是慢慢的解决了,上传我的运用zk框架基于java的一个web学生管理系统开发给大家参考,希望能对学习zk框架的朋友有一点点的帮助。
ZK资料学习zk框架的助手,带你步入zk的殿堂。。。。。
ZK框架 : Ajax开发实战1.rar
ZK框架官方API,目前国内很少有这方面的资料!
zk框架中的一些注解使用,项目中的需要用到的,各位可以了解一下,希望可以帮到大家!今后可以多交流,相互学习,共同进步。
zk框架开发中遇到的错误整理