一,所属命名空间不同
zul组件 xmls= http://www.zkoss.org/2005/zul
zhtml组件 xmlns:h=" http://www.w3.org/1999/xhtml "
native组件 xmlns:n=" http://www.zkoss.org/2005/zk/native "
二,组件类不同
zul组件 zul.jar下组件类
zhtml组件 zhtml.jar下组件类
native组件 全部是zk.jar下的类org.zkoss.zk.ui.HtmlNativeComponent
三,事件处理EventHandler
1,zhtml组件 可以触发事件处理函数onSetting
<h:input value="测试" type="button" forward="onSetting" xmlns:h=" http://www.w3.org/1999/xhtml"/ >
2, native组件不可以触发事件处理函数onSetting
<n:input value="测试" type="button" forward="onSetting" xmlns:n="native"/>
3,zul组件可以触发事件处理函数onSetting
<button label="测试" id="btnSubmit" forward="onSetting"></button>
四,受管状态
所谓受管状态,全由个人杜撰,即所在命名空间保存其组件信息,可通过命名空间查找删除组件
1)结论
1,zul组件 与 zhtml组件 是受所在命名空间管理的
2,native组件 不受所在命名空间管理
2)结论依据
zul组件、zhtml组件、native组件 有一个共同祖先 org.zkoss.zk.ui.AbstractComponent类
在zk5.06版中的AbstractComponent类的setId(543行)方法中有一行代码
addToIdSpaces(this);(589行),意思是将当前组件添加到id命名空间中,
例如添加到window,page中, 但在addToIdSpaces方法中有一段有趣的代码
/** Adds to the ID spaces, if any, when ID is changed.
* Caller has to make sure the uniqueness (and not auto id).
*/
private static void addToIdSpaces(final Component comp) {
final String compId = comp.getId();
if (comp instanceof NonFellow || isAutoId(compId))
return; //nothing to do
if (comp instanceof IdSpace)
((AbstractComponent)comp).bindToIdSpace(comp);
addFellow(comp, getSpaceOwnerOfParent(comp));
}
这段有趣的代码
if (comp instanceof NonFellow || isAutoId(compId))
return; //nothing to do
意思是排除符合NonFellow接口的组件,排除由zk自动生成id的组件
然后我查看了zul组件,zhtml组件,native组件,发现native组件HtmlNativeComponent实现了该接口
如下:
public class HtmlNativeComponent extends AbstractComponent implements DynamicTag, Native {
//................
}
public interface Native extends NonFellow {
//................
}
五,生成静态内容
zul页面代码
<?xml version="1.0" encoding="utf-8"?>
<window
xmlns:w="client" xmlns:n="native" xmlns="http://www.zkoss.org/2005/zul"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd"
apply="IndexController">
<h:input value="测试" type="button" forward="onSetting" xmlns:h="http://www.w3.org/1999/xhtml"/>
<n:input value="测试" type="button" forward="onSetting" xmlns:n="native"/>
<button mold="os" label="测试" forward="onSetting"></button>
</window>
生成静态内容,与上面代码顺序一样
['zhtml.Widget','oW6Q1',{$onClick:true,prolog:'<input id="oW6Q1" value="测试" type="button"/>'},[]],
['zk.Native','oW6Q2',{prolog:'\n\t<input value="测试" type="button"/>'},[]],
['zul.wgt.Button','oW6Q3',{$onClick:true,prolog:'\n\t',label:'测试'},[],'os']]]]]);
从中我们可以看出:
1,从上面json格式的代码可以看出zhtml与native组件仅仅做了简单的处理,直接输出到prolog属性上
2,zul组件与zhtml组件都监听了onClick事件,$onClick:true,从而触发服务器端controller类的事件处理程序
实践:
由上可以知道,native组件无法getFellow得到,所以如果你这么做了,一定获得null,
但如果想获得native组件,有一个方法:
获得native组件附近的受管zhtml组件或zul组件然后通过这些组件的方法获得
1,如果父组件是native组件,getParent方法
2,如果子组件第一个组件是native组件 getFirstChild方法
,
3,如果子组件的第一个组件是native组件getLastChild方法,
4,如果相邻的上一个组件是native组件,getNextSibling方法
5,如果相邻的上一个组件是native组件,getPreviousSibling方法
6,当然你也可以使用链式方法获取native组件
分享到:
相关推荐
在本安装文件中,你将找到所有必要的组件来配置和使用ZUL Studio进行ZK应用的开发。 首先,我们来了解一下ZUL Studio的核心特性: 1. **可视化设计**:ZUL Studio提供了一个直观的拖放式界面,允许开发者直接在...
在本文中,我们将深入探讨ZK组件开发指南的相关知识点,主要关注展现层的构建、DSP文件的使用以及组件渲染器的工作原理。 首先,展现层是客户端组件的可视化部分,它可以是HTML、JavaScript、MIDLet、XML节点或...
整理的比较全面的zul页面注解和java注解,初学zk框架的朋友可以看看,了解注解的功能,便于框架的学习。
- 创建第一个ZK项目"Hello World"时,通常会通过Eclipse创建一个新的ZK Web项目,然后编写包含简单组件(如Label)的ZUL页面,最后运行并查看结果。 - 分析配置文件,例如web.xml,了解ZK应用如何与Servlet容器...
- **实现组件**:实现ZK组件的核心是继承自`zul.wgt.AbstractComponent`类或其子类,并覆盖必要的方法以定义组件的行为。 - **实现组件属性**:组件可以通过定义属性来提供灵活性。这些属性可以在服务器端设置,并...
- **定义组件类**:继承自 `zul.wgt.UICustom` 类或其他 ZK 组件基类,实现必要的方法。 - **实现属性**:根据需求添加组件的属性,如 `String` 类型的名称等。 - **编写客户端代码**:使用 JavaScript 实现组件...
根据提供的文件信息,我们可以深入探讨两个主要的知识点:ZUI 动态生成树的代码以及 ZUL 对 ExtJS 的集成。 ### ZUI 动态生成树的代码 #### 概述 ZK 是一个用于构建企业级 Web 应用的强大框架,而 ZUI 是其前端...
它通过一种称为ZUL(ZK User Interface Language)的标记语言,结合服务器端的组件模型,实现了前后端的分离,简化了开发流程。 1.2 ZK特点 - **事件驱动**:ZK在服务器端处理用户交互,减轻了客户端的压力。 - **...
4. **ZUL语言**:ZK提供了一种标记语言ZUL(ZK User Interface Language),用于定义用户界面布局和组件。ZUL文件类似于XML,用于描述组件结构和行为。 5. **Ajax技术**:ZK利用Ajax实现页面的部分刷新,提升用户...
在ZK中,树组件是通过XML(ZUL文件)和Java类(如Composer或Listener)共同定义的。ZUL文件负责布局和组件定义,而Java类则处理业务逻辑和事件处理。 描述中提到,为了在MyEclipse中重现ZK的主界面,你需要创建一个...
在Eclipse中创建一个新的ZUL文件(ZK的用户界面文件),并编写简单的Hello World组件,例如: ```xml , ZK!" /> ``` 运行这个项目,你将在浏览器中看到"Hello, ZK!"的显示。 2.4 **例子中的配置分析** ZUL文件...
5. **ZUL和SML页面**:ZK使用ZUL(ZK User Interface Language)和SML(Screen Markup Language)作为其标记语言。通过分析代码,你可以理解这两种语言的语法和用法,如何定义布局和组件属性。 6. **Composer和...
4. **ZUL文件**:ZK使用ZUL(ZK User Interface Language)作为界面描述语言,类似于XML,用于定义组件结构和行为。ZUL文件中可以嵌入EL表达式,方便地处理数据绑定和事件处理。 5. **Composer**:Composer是ZK中的...
- **创建ZUL文件**:使用ZUL文件定义用户界面,ZUL文件包含了各种组件以及它们的属性和事件处理。 - **编写Java控制器**:创建Java类作为控制器,处理ZUL文件中的事件,实现业务逻辑。 - **配置和部署**:配置ZK...
1. **Window**:用于创建独立的弹出窗口,可包含多个ZUL组件。 2. **Grid**:用于展示二维数据,类似表格,支持排序、分页等功能。 3. **Listbox**:展示列表数据,支持多选和单选。 4. **Tree**:用于展现层级结构...
《ZK开发手册》是专为Java开发者设计的一份详尽指南,主要涵盖了ZK框架的各个方面,旨在帮助用户深入理解和高效使用这个强大的组件。ZK是一个基于组件的、事件驱动的用户界面(UI)框架,它使得在Web环境中创建交互...
4. **ZUL脚本语言**:ZK 自定义的 ZUML (ZK User Interface Markup Language) 是一种声明式语言,用于描述用户界面布局和组件属性,简化了界面设计。 5. **数据绑定**:ZK 支持双向数据绑定,可以轻松地将组件与...
总之,ZK 5是一个强大且易用的Web开发框架,它的事件驱动模型、丰富的组件库、灵活的布局管理以及ZUL脚本语言,都极大地提升了开发效率和应用质量。对于希望进入或提升在RIA领域的开发者来说,理解和掌握ZK 5的知识...