在上一个文章里,我们把项目建好了,并且已经成功运行,现在来理解下zk事件驱动(event-driven)的,基于组件(component-based)的特点
先来点理论,什么叫做基于组件,维基百科里面这么描述的:基于组件的软件工程(Component-based software engineering,简称CBSE)或基于组件的开发(Component-Based Development,简称CBD)是一种软件开发范型。它是现今软件复用理论实用化的研究热点,在组件对象模型的支持下,通过复用已有的构件,软件开发者可以“即插即用”地快速构造应用软件。这样不仅可以节省时间和经费,提高工作效率,而且可以产生更加规范、更加可靠的应用软件。
所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作.
还是用之前的例子来具体说明下
<?page title="Auto Generated index.zul"?>
<window title="Hello World!!" border="normal" width="200px">
<label value="You are using: ${desktop.webApp.version}"/>
</window>
<label value="You are using: ${desktop.webApp.version}"/>
注意:zk集成了EL表达式,但是这个EL表达式的功能并不全,比如把数据库的clob字段取出来放到ZK集成的这个EL表达式里面,他就不能分辨<br />这类HTML代码,而我们用jsp提供的EL表达式就可以完美的实现换行的效果,希望ZK能在以后的版本里面修正这个BUG
这个label实现的效果是:
You are using: 3.6.2
可以看到,我们得到了当前zk的版本信息,那他是怎么调用的呢,分析这句代码:${desktop.webApp.version}
desktop的意思是桌面信息,因为ZK是基于组件的,在之前的文章里,我们知道,页面(org.zkoss.zk.ui.Page)是一系列组件的集合,而桌面又是页面的集合,所以我们在任何调用组件的地方都可以直接通过组件得到当前桌面的信息,然后我们通过桌面就能得到application的版本信息了
这句代码,我们这样写更便于理解
${self.desktop.webApp.version}
self的含义是得到当前组件信息,也就是当前这个label,然后通过label进一步得到桌面信息
当然,我们也可以尝试在ZS文件里面写,我们先建一个index.zs文件和index.zul同一个目录下
index.zul需要导入index.zs文件:
<zscript src="index.zs" ></zscript>
当然,为了能够调用相应的组件,我们需要把ID给组件加上
<window id="win" title="Hello World!!" border="normal"