1、ZK 常用在一个页面中使用多种脚本语言 var1 = 123; var2 = 234; $value :赋值 -自定义控件- 使用 getZScriptVariable 方法来获得 zscript 中的定义的变量。 使用 getZScriptClass 和 getZScriptMethod 方法来获取定义在 zscript 中的类和方法 如果你想找到某个解释器,可以使用 getInterpreter 方法先获得解释器,就像下面一样: page.getInterpreter(“JavaScript“).getVariable(“some“); /interpreter for JavaScrip
2、t page.getInterpreter(null).getVariable(“some“); /interpreter for default language 特殊字符替换 用 来替换 来替换 “ 用 来替换 用 来替换 0) /do something -html 里添加命名空间 - hello word! -if unles- 如果 a 为 1,且 b 不为 2 window 组件就会被创建。 . -Switch 和 Case- 使用 zk 元素的 switch 和 case 属性,你可以控制 ZK 页面在一个变量等于某个特定值时才会被执行。 Evaluated only if $f
3、ruit is apple Evaluated only if $fruit equals $special Evaluated only if none of the above cases matches. -正则表达式- Evaluate if the regular expression, ap*.e“., matches the switch condition. -和 forEach 一起使用- 等价于, -反复式流程 在下面的例子中,列表项目被创建了三次。每个项目的 label 分别为“Best“, “Better“ 和 “God“, 如果你有一个存放对象集合的变量,则可以直接为
4、 forEach 属性指定它。例如,假如你有一个 grades 变量,如下。 grades = new String “Best“, “Better“, “Good“; 然后可以使用 forEach 属性来迭代此变量。注意,你必须使用 EL 表达式来指定这个集合。 迭代(iteration)依赖于 forEach 属性指定值的类型。 如果是 java.util.Collection,就会迭代集合(collection)的每个元素。 如果是 java.util.Map,就会迭代 map 中的每个 Map.Entry。 如果是 java.util.Iterator,就会迭代迭代器 (iterato
5、r)中的每个元素。 如果是 java.util.Enumeration,就会迭代 enumeration 中的每个元素。 如果是 Object,int ,short,byte,char,float或 double被指定了,就会迭代数组(array)中的每个元素。 如果是 null,什么也不会产生(被忽略) 。 如果被指定的不是以上类型,相关元素仅被赋值(evaluated)一次,就好像一个集合只指定了一个单 独的项目。 each 变量 在迭代中,一个变量被称为 each,通过指定集合的项目被创建并且赋值。在上面的例子中,首次迭代中,each 被赋值为“Best“ ,然后是“Better“ ,最
6、后是“Good“。 注意 each 变量在 EL 表达式和 zscript 中都是可访问的。ZK 将会保留以前定义的每个变量,并在迭代完每个元素后将其恢复。 -隐含对象- self :组件本身 page :页面,与 self.page 相同 event: 当前事件 -进程指令- 你可以将 page 指令放置在 XML 文档的任何地方 - component 指令: . . 等价于下面的代码: . - - My content - unless 属性 unless=“$ an-EL-expr “ 指定不为相关元素赋值(evaluate)的条件。换句话说,如果条件值为真(false),关联元素及其
7、所有子元素会被忽略。 - forEach 属性 forEach=“$an-EL-expr“ forEach=“$an-EL-expr,a-value“ 有两种格式。第一种,你可以不使用逗号来指定一个值。通常为一个对象集合,这样关联元素可以依靠(against)集合中的每个对象重复被赋值。如果没有指定或为空,此属性会被忽略。如果没有集合对象被指定,仅会被赋值一次就好像有一个单元素的集合被指定。 第二种,你可以指定一个列表,使用逗号分隔各项目。然后,对于列表中的每个值,相关联的元素会被重复执行(he associated element will be evaluated repeatedly a
8、gainst each value in the list)。 - forEachBegin 属性 forEachBegin=“an-interger“ forEachBegin=“$an-EL-expr“ 被用于 forEach 属性,指定迭代(iteration)开始处索引(从 0 开始) 。如果没有指定,迭代会从第一个元素开始,即 0。 如果 forEachBegin 大于或等于元素的数目,则不会发生迭代。 注:forEachBegin.index 对于基本的集合,数组和其他类型是绝对的(forEachStatus.index is absolute with respect to th
9、e underlying collection, array or other type)。例如,如果 forEachBegin 为 5 ,forEachStatus.index 的第一个值为 5。 - forEachEnd 属性 for EachEnd=“$ an-EL-expr “ 被用于 forEach 属性,指定迭代(iteration)结束处索引(包括此)(从 0 开始) 。如果没有指定,迭代会在最后一个元素处结束。 如果 forEachEnd 大于或等于元素的数目,则迭代会在最后一个元素处结束。 - . - forward 属性 forward=“target_event_expr
10、“ forward=“oringal_event=target_event_expr“ 这里 target_event_expr 是一个事件表达式。事件表达式被用于为一个组件指定事件。可以使用下面格式中的一个: event-name target-id.event-name id1/id2/id3.event-name $el-expr.event-name 此属性用将目标组件一个事件以其他事件名称跳转至另一个组件。这就是所谓的跳转条件(forward condition)。 例如,你可以将 button 的 onClick 事件跳转至 window,如下: . - - orient:控制布局
11、为横向或纵向。 例如:orient=“vertical“ -单选按钮和单选按钮组- -图像- 等价于: 通过为 imagemap 然后,组件添加 area 子组件,开发人员可以代替使用应用程序本身处理坐标的方法。 - 日历:datebox -分页- paging 组件用于将一段很长的内容分成多个页面。例如, 假定有 100 个项目,每次显示 20个项目,那么可以按如下方式使用 paging 组件。 - 标题 (caption)是 caption 组件声明的。 caption 组件的所有子组件都会出现在 title 的右边。也可以指定为图片 closable=“true“:关闭 window 以
12、下是不关闭,点击后隐藏 In this example, this window hides itself when the close button is clicked. 注意,必须调用 event.stopPropagation()阻止 Window.onClose()被调用。 sizable=“true“:这样用户可以拖曳边框来改变 window 样式: sclass=“wndcyan“ sclass=“popup“ sclass=“modal“ 默认为没有 -滚动窗口- contentType 的一个典型应用是使一个 window 变得可滚动。: This is a long lin
13、e to spead over several lines, and more content to display. Finally, the scrollbar becomes visible. This is another line. -窗口边框- div.wc-embedded-dash padding: 2px; border: 3px dashed #aab; Hello, World! -消息框 - if (Messagebox.show(“Remove this file?“, “Remove?“, Messagebox.YES | Messagebox.NO, Messag
14、ebox.QUESTION) = Messagebox.YES) ./remove the file alert(“Wrong“); Messagebox.show(“Wrong“); -文件上传对话框 - Object media = Fileupload.get(); if (media instanceof org.zkoss.image.Image) image.setContent(media); else if (media != null) Messagebox.show(“Not an image: “+media, “Error“, Messagebox.OK, Messag
15、ebox.ERROR); -一次上传多个文件- 如果你允许一次上传多个文件,可以按如下方式指定允许数字的最大值。 fileupload 组件: Upload your hot shot: -布局- borderlayout :border=“normal“ 有边框 :border=“none“ 无边框(默认) splittable 和 collapsible 属性 若你想使你的布局组件可拆分(splittable),则可以将 splittable 属性设置为 true。 此外,若你想使一个组件可折叠(collapsible),则可以将 collapsible 属性设置为 true。 :vbox
16、 组件用于创建垂直 box。 :hbox 组件用于创建水平 box。 * 等价与 * spacing 属性: box 控件组件之间的间隙控制 -widths 和 heights 属性- 使用 widths 属性可以指定 hbox 每个元素(cell)的宽度,如下。 分割效果:splitter Column 1-1: The left-top box. To know whether a splitter is collapsed, you can listen to the onOpen event. Column 1-2: You can enforce to open or collaps
17、e programming by calling setOpen method. Column 2: Whether a splitter allows users to open or collapse depending on the collapse attribue. :将 autocheck 属性设为 true,这样当用户点击此菜单项目时 checked 属性就会被自动切换(toggled)。 - 可以将其改变为当鼠标移动到菜单上方时它自动打开。将 autodrop 属性设为 true 即可实现。: . collapse=“none“ 无折叠发生。 collapse=“before“
18、 当按下按键时,相同组件内的元素立即在分割器(splitter)前折叠起来,这样其宽度或高度将变为 0。 collapse=“after“ 当按下按键时,相同组件内的元素立即在分割器(splitter)后折叠起来,这样其宽度或高度将变为 0 -网格- sizable=“true“:可调整宽度 添加 mold 和 pageSize 属性分页 :在任何处加上 paging 即和 grid 里的分页相同 sortDirection=“ascending“ :排序 separator: 使用 orient 属性,你可以指定一个垂直或水平的 separator。默认为水平 separator,即插入一条
19、水平线。 而垂直的 separator 为插入一个空格。另外,space 是默认为垂直方向的separator 的一种变体型(variant)。 使用 bar 属性,你可以控制在组件间显示水平线还是垂直线。 使用 spacing 属性,你可以控制 spacing 的大小。 line 1 by separator line 2 by separator line 3 by separatoranother piece line 4 by separatoranother piece toolbar 有两种布局方向:horizontal 和 vertical。它们可以控制如何放置按钮。 -列表框- Listbox 有两种模型:default 和 select。若使用了 select,就会产生 HTML 的 SELECT 标签。.:带滚动下拉 引用 css 文件: -弹出式窗口 -