------在一个页面中使用多种脚本语言----
<zscript language=”Java”>
var1 = 123;
</zscript>
<zscript language=”JavaScript”>
var2 = 234;
</zscript>
${value} :赋值
———-自定义控件—————
<?component name=”button” extends=”button” style=”border:1px solid blue” label=”用户权限”?>
<button onClick=”check()”/>
使用getZScriptVariable方法来获得zscript中的定义的变量。
使用getZScriptClass和getZScriptMethod方法来获取定义在zscript中的类和方法
如果你想找到某个解释器,可以使用getInterpreter方法先获得解释器,就像下面一样:
page.getInterpreter(“JavaScript”).getVariable(“some”); //interpreter for JavaScript
page.getInterpreter(null).getVariable(“some”); //interpreter for default language
特殊字符替换
< 用 <来替换
> 用 >来替换
& 用 &来替换
“ 用 "来替换
‘ 用 '来替换
<zscript>
<![CDATA[ ----- 用CDATA解释器
void myfunc(int a, int b) {
if (a < 0 && b > 0) {
//do something
}
]]>
</zscript>
————–html里添加命名空间———-
<html xmlns:=”http://www.w3.org/1999/xhtml”
xmlns:x=”http://www.zkoss.org/2005/zul”
xmlns:zk=”http://www.zkoss.org/2005/zk“>
<body>hello word!</body>
</hmtl>
————if unles——-
如果a为1,且b不为2 window 组件就会被创建。
<window if=”${a==1}” unless=”${b==2}”>
…
</window>
————Switch和Case——-
使用zk元素的switch和case属性,你可以控制ZK页面在一个变量等于某个特定值时才会被执行。
<zk switch=”${fruit}”>
<zk case=”apple”>
Evaluated only if ${fruit} is apple
</zk>
<zk case=”${special}”>
Evaluated only if ${fruit} equals ${special}
</zk>
<zk>
Evaluated only if none of the above cases matches.
</zk>
————正则表达式———
<zk switch=”${fruit}”>
<zk case=”/ap*.e/”>
Evaluate if the regular expression, ap*.e”., matches the switch condition.
</zk>
</zk>
————和forEach一起使用—
<zk case=”${each}” forEach=”apple, orange”>
等价于,
<zk case=”apple, orange”>
————反复式流程
在下面的例子中,列表项目被创建了三次。每个项目的label分别为”Best”, “Better” 和 “God”,
<listbox>
<listitem label=”${each}” forEach=”Best, Better, God”/>
</listbox>
如果你有一个存放对象集合的变量,则可以直接为forEach属性指定它。例如,假如你有一个grades变量,如下。
<zscript>
grades = new String[] {“Best”, “Better”, “Good”};
</zscript>
然后可以使用forEach属性来迭代此变量。注意,你必须使用EL表达式来指定这个集合。
<listbox>
<listitem label=”${each}” forEach=”${grades}”/>
</listbox>
迭代(iteration)依赖于forEach属性指定值的类型。
如果是java.util.Collection,就会迭代集合(collection)的每个元素。
如果是java.util.Map,就会迭代map中的每个Map.Entry。
如果是java.util.Iterator,就会迭代迭代器(iterator)中的每个元素。
如果是java.util.Enumeration,就会迭代enumeration中的每个元素。
如果是Object[],int[],short[],byte[],char[],float[]或double[]被指定了,就会迭代数组(array)中的每个元素。
如果是null,什么也不会产生(被忽略)。
如果被指定的不是以上类型,相关元素仅被赋值(evaluated)一次,就好像一个集合只指定了一个单 独的项目。
each变量
在迭代中,一个变量被称为each,通过指定集合的项目被创建并且赋值。在上面的例子中,首次迭代中,each被赋值为”Best”,然后是”Better”,最后是”Good”。
注意each变量在EL表达式和zscript中都是可访问的。ZK将会保留以前定义的每个变量,并在迭代完每个元素后将其恢复。
—————–隐含对象——————
self :组件本身
page :页面,与self.page相同
event: 当前事件
—————-进程指令——————-
你可以将page指令放置在XML文档的任何地方
<?page [ autocheck=”true”/>:将autocheck属性设为true,这样当用户点击此菜单项目时checked属性就会被自动切换(toggled)。
———————————-
可以将其改变为当鼠标移动到菜单上方时它自动打开。将autodrop属性设为true即可实现。:
<menubar autodrop=”true”>
…
</menubar>
<splitter collapse=”before”/>
collapse=”none” 无折叠发生。
collapse=”before” 当按下按键时,相同组件内的元素立即在分割器(splitter)前折叠起来,这样其宽度或高度将变为0。
collapse=”after” 当按下按键时,相同组件内的元素立即在分割器(splitter)后折叠起来,这样其宽度或高度将变为0
———–网格————–
<columns id=”cs” sizable=”true”>
sizable=”true”:可调整宽度
<grid width=”300px” mold=”paging” pageSize=”4″>
添加mold和pageSize属性分页
<paging id=”pg” pageSize=”4″/>:在任何处加上paging即和grid里的分页相同
sortDirection=”ascending” :排序
separator:
使用orient属性,你可以指定一个垂直或水平的separator。默认为水平separator,即插入一条水平线。 而垂直的separator为插入一个空格。另外,space是默认为垂直方向的separator的一种变体型(variant)。
使用bar属性,你可以控制在组件间显示水平线还是垂直线。
使用spacing属性,你可以控制spacing的大小。
<separator spacing=”20px”/>
<window>
line 1 by separator
<separator/>
line 2 by separator
<separator/>
line 3 by separator<space bar=”true”/>another piece
<separator spacing=”20px”/>
line 4 by separator<space bar=”true” spacing=”20px”/>another piece
</window>
toolbar有两种布局方向:horizontal 和 vertical。它们可以控制如何放置按钮。
—————–列表框—————————
Listbox有两种模型:default和select。若使用了select,就会产生HTML的SELECT标签。
<listbox mold=”select”>…</listbox>:带滚动下拉
引用css文件:<style src=”/my.css”/>
—————弹出式窗口———————–
<window id=”win” title=”Hi!” border=”normal” width=”200px”>
<caption>
<toolbarbutton label=”Close” onClick=”win.setVisible(false)”/>
</caption>
<checkbox label=”Hello, Wolrd!”/>
</window>
<button label=”Overlap” onClick=”win.doOverlapped();”/>
<button label=”Popup” onClick=”win.doPopup();”/>
<button label=”Modal” onClick=”win.doModal();”/>
<button label=”Embed” onClick=”win.doEmbedded();”/>
<button label=”Highlighted” onClick=”win.doHighlighed();”/>