创建一个元素的流程可以条件式的。通过只指定if或unless属性,或都指定,开发人员可以控制是否创建相关的元素。
在下面的例子中,如果a为1,且b不为2 window 组件就会被创建。如果一个元素被忽略,那么它所有的组件都会忽略。
<window if="${a==1}" unless="${b==2}">
...
</window>
下面的例子控制什么时候解释Java代码。
<textbox id="contributor"/>
<zscript if="${param.contributor}">
contributor.label = Executions.getCurrent().getParameter("contributor");
</zscript>
使用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>
ZK加载器会从第一个case执行到最后一个case,直到匹配switch的条件,即switch属性指定的值。语句是互相排斥的条件(The evaluation is mutually exclusive conditional.),只有第一个匹配的case才会被执行。
zk元素没有任何case匹配,则为default-即,当前面所有的case都不匹配时则执行default。
你可以为case属性指定一个case列表,这样当其中一个匹配时,此部分的ZK页面会被执行。
<zk switch="${fruit}">
<zk case="apple, ${special}">
Evaluated if ${fruit} is either apple or ${special}
</zk>
</zk>
<zk switch="${fruit}">
<zk case="/ap*.e/">
Evaluate if the regular expression, ap*.e"., matches the switch condition.
</zk>
</zk>