ZK
Hlayout 换行
<hlayout>
<div class=”mydiv” />
</hlayout>
Hlayout
默認
white-space: nowrap;
改.mydiv {
white-space: normal;
}
ZK 文档范例下载链结
目前上手ZK比较推荐的文档 - ZK Essentials
线上文档 :
http://books.zkoss.org/wiki/ZK_Essentials
离线文档下载(PDF) :
http://www.zkoss.org/zkdownload/startDownloadFile?id=435989120
*使用ZK论坛帐号密码登入
范例专案下载 :
ZK Studio 1.0 发布新功能
个人觉得 下面几个新功能相当不错:
ZK MVC 提取器
一个将zscript中事件监听器重构至Java代码的工具,以此符合ZK MVC 样式
文档
http://books.zkoss.org/wiki/ZK_Studio_Essentials/Features_of_ZK_Studio/Zscript_to_MVC_Extractor支持Eclipse 3.6 与 3.5 (3.6总算不会报错了)
示例代码向导
文档
http://books.zkoss.org/wiki/ZK_Studio_Essentials/Features_of_ZK_Studio/Sample_Code_WizardZK样式设计
- Zeta (貌似数据库连接之示例… 需另外装
文档
http://books.zkoss.org/wiki/ZK_Studio_Essentials/Features_of_ZK_Studio/DB_Form_Builder挺给力的
####
####
####
推荐 Fisheye Demo
原来Fisheye支持Java2D
看来可以玩的更多了
http://www.zkoss.org/zkdemo/menu/dynamic_fisheye_menu
看了代码 发现 如果把Text 清空 会变成 ZK Rockss
ZK Demo 会话超时(session timeout)设定详解
原来只是一个小设定
会话超时元素 (The session-timeout Element)
[默认: 0 _(根据网页服务器)_]
这个设定可以在客户端送出多个请求之间,指定会话有效的秒数。若指定负数则会话永不失效。
默认0秒则使用zk缺省值(定义在/WEB-INF/web.xml中)。
超时讯息元素 (The timeout-message Element)
[可选择的] [5.0.5 开始] [默认: _定义在 [MZk.UPDATE_OBSOLETE_PAGE](http://docs.zkoss.org/wiki/Msgzk.properties "http://docs.zkoss.org/wiki/Msgzk.properties") 的讯息_]
指定会话超时後提示的讯息。本设定只有当timeout-uri没被设定才会生效。
<session-config> <device-type>ajax</device-type> <timeout-message>Session timeout. Please reload.</timeout-message> </session-config>
国际化
如果你想要指定一个根据地区提示的讯息,你可以指定前缀label接着:key如下
<session-config> <device-type>ajax</device-type> <timeout-message>label:timeout</timeout-message> </session-config>
然後你必须要准备i3-Label 文件,参考 ZK Developer’s Reference.
#默认i3-label.properties #中文i3-label_zh_CN.properties #可允许多行讯息 timeout={ 会话超时,请重整页面 }
JavaScript
你可以提供JavaScript代码来取代默认的讯息对话。只要指定前缀script,客户端会直接直接执行你所设定的代码。
例子,你有一个function叫做foo.timeout用来处理超时之後的效果。你可以设定zk.xml如下
<session-config> <device-type>ajax</device-type> <timeout-message>script:foo.timeout('Session Timeout')</timeout-message> </session-config>
这段代码必须为Javascript。
这是zkdemo超时之後的回应(大概 半小时)
拆包一下
script: $("#z-timeout").remove(); $('body').append('<div id="z-timeout"><span>Timeout, <b>move mouse</b> to refresh...<img src="/zkdemo/images/refresh2.gif" style="display:none;"/></span></div>'); $("#z-timeout").slideDown(1000); $('body').mouseover(function() { $("img","#z-timeout").show(); $('#container > div:gt(0)').fadeOut(1000); setTimeout("location.reload()", 1500); });
zk.xml (推测)
**<timeout-message>**script:<![CDATA[ $("#z-timeout").remove(); $('body').append('<div id="z-timeout"><span>Timeout, <b>move mouse</b> to refresh...<img src="/zkdemo/images/refresh2.gif" style="display:none;"/></span></div>'); $("#z-timeout").slideDown(1000); $('body').mouseover(function() { $("img","#z-timeout").show(); $('#container > div:gt(0)').fadeOut(1000); setTimeout("location.reload()", 1500); }); ]]>**</timeout-message>**
贴个效果
ZK 属性 & 变量 & 客制属性
该怎设定 就怎取得
在XML 标准中, 标签上有attribute(属性)
<window>
<attribute name=”title”>My Window</attribute>
<attribute name=”border”>normal</attribute>
<attribute name=”width”>200px</attribute>
這是一個Window
</window>
- 变量(已经舍弃)
客制属性
<zk>
<zscript><![CDATA[
public void test1() {result1.setValue(getData(div1.getAttribute("mykey"))); result2.setValue(getData(div1.getVariable("mykey", false)));
}
public void test2() {result3.setValue(getData(div2.getAttribute("mykey2"))); result4.setValue(getData(div2.getVariable("mykey2", false)));
}
public String getData(Object obj) {return obj == null ? "null" : (String) obj;
}
]]></zscript>
<hlayout><vlayout> <vlayout> <div id="div2" style="border: 1px solid red"> <custom-attributes mykey2="key2" /> <html><![CDATA[ This is a DIV(div2) + <br /> &lt;custom-attributes mykey2="key2" /&gt; ]]></html> </div> <button label="get Sth" onClick="test2();" /> </vlayout> <hlayout> div2 get attribute : <label id="result3" value="" /> </hlayout> <hlayout> div2 get Variable : <label id="result4" value="" /> </hlayout> </vlayout> <separator width="30px" /> <vlayout> <vlayout> <div id="div1" style="border: 1px solid green"> <variables mykey="key1" /> <html><![CDATA[ This is a DIV(div1) + <br /> &lt;variables mykey="key1" /&gt; ]]></html> </div> <button label="get Sth" onClick="test1();" /> </vlayout> <hlayout> div1 get attribute : <label id="result1" value="" /> </hlayout> <hlayout> div1 get Variable : <label id="result2" value="" /> </hlayout> </vlayout>
</hlayout>
</zk>
ZK Scope 常用方法与结果
zk的scope是很重要的观念
Execution/Page/Session/Desktop/WebApp
在用zk开发应用时,常常会遇到这样的问题
特别用zk 的grouping 功能做了一个常用方法列表与结果的对照
当遇到如下的问题时,能快速的获得解答
_”如何获取目前要求(request)的路径(path)?”
“如何获取目前页面(page)之标题(title)?”
“如何获取目前之Session?”
“如何获取目前之ZK版号(version)?”
“如何转向另一个页面(redirect)?”_
类似的很多 无法一一列举
如果有想到什麽会陆续更新上来
参考画面
刚接触ZK 应该很有帮助
代码如附件
本文附件下载:* [scope.zip](http://dl.iteye.com/topics/download/292d04d2-8d8b-3cc8-ba1d-c615a4c4d29f) (1.9 KB)
ZK Client Side Program 初体验
在zul中使用命名空间
<?taglib uri="http://www.zkoss.org/2005/zk/client" prefix="w" ?>范例元件
<textbox id="name" value="123456789~~~!!!" />取得元件
<script type="text/javascript"><![CDATA[ zk.afterMount(function() { var v = jq('$name'); alert(v.val()); }); ]]></script>
打印
<button label="Print" w:onClick="window.print();"/>关闭
<button label="Close" w:onClick="window.close();" />