ZUML允许在页面中嵌入script脚本,有两种类型的脚本:server端的和client端的,我们先讨论服务器端的脚本。
在ZK提供的文档里,说明了server-side的脚本有两种嵌入方式:the zscript element、the event handler。前者当页面加载完成后执行,后者是在事件触发时执行。
我们可以想见,在ZUML page中嵌入脚本对于应用程序执行是非常有效的,因为如果对页面的样式进行修改或者其他的操作就不必再进行编译了。
zscript
你可以在zscript元素中嵌入脚本,在脚本中,你可以声明变量,函数,甚至是一个pojo,默认的情况下,脚本是java语言,当然你还可以使用其他语言,比如说groovy。但是无论使用的是那种语言,它只有在运行期间才进行翻译,所以一些语法错误或者排版错误只有在这个时候才能被检查出来,由于它是在server当中运行的,所以可以接受任何类型的library,而且这些对于页面中的el来说是完全可见的。
cdata
在zscript当中代码必须是格式良好的xml,也就是说你必须使用特殊的字符,比如你想使用<就必须用<来代替,为了减少特殊字符的使用我们可以把代码都嵌入到cdata当中,那么在它里面的代码就不会被当做普通的text了。
<zscript>
<![CDATA[
if(a<b&&b<c){
<!-- 这样是可以的,因为我们使用了cdata-->
}
]]>
</zscript>
Event Handlers
这是在zuml中嵌入脚本的第二种方式
<button onClick="alert(........)"/>
请注意,是以on开头的,而且第三个字母是大写的,在这段代码中,onClick会被当做button的一个属性。
当这个属性的值比较复杂的情况下,我们可以用attribute元素。
<button label="hi">
<attribute name="onClick">
<![CDATA[
if(anything > best){
best = anything
}
]]>]
</attribute>
</button>
需要注意的是,我们应该将el和ascript区分开来,不能将二者混用
zscript支持除了java意外的其他语言
<?page zscriptLanguage="Groovy"?>