看板 java 關於我們 聯絡資訊
來寫篇延伸閱讀好了,講一下什麼是 zscript , 這傢伙看起來好像只能 support 1.4 syntax 限制很多; 但事實上,zscript/beanshell 在zk 扮演一個蠻重要的角色。 zscript 的真正本質我們之後再講,先講怎麼用 zscript 。 ----------------------------------------------------- 一般而言,我們所謂的 zscript ,一開始剛進入 zk 世界的玩家, 會注意到的 zscript 會是在 zul 中的 <zscript> tag。 (至於什麼是 zul 請參考 #1CgVo5YY (java) [J2EE] 閒聊 zk 導論 1 ) 以一個簡單的 zul 列出表格的實作來看, ----------------------------------------------------- <zk> <zscript> ListModelList models= new ListModelList(); models.add("1"); models.add("2"); models.add("3"); models.add("4"); models.add("5"); </zscript> <listbox id="list" model="${models}"> <listhead> <listheader label="item list" sort="auto"/> </listhead> </listbox> </zk> ----------------------------------------------------- 這裡有一點需要說明, default 當你沒有設定 listbox 要怎麼產生內容(ItemRender), 他就會以每一行印出對應 model 中的 toString 的方式印出 Listbox內容。 就像這個影片示範的這樣 http://goo.gl/Wufub 如果沒有 zscript , 這樣簡單的功能我們就必須寫一個zul , 一個 java composer class , 才能夠作到 . 關於 zscript 的初步介紹到這裡就好了; 再來要討論 zscript 怎麼實做的。 首先 zscript 是主要依賴於 beanshell ( http://www.beanshell.org/ ), 他給我的感覺有點像是 groovy ,語法限制比標準 java寬鬆了一些, 也比較不在乎型態,而且他是可以 interactive 的逐行執行。 對他的語法靈活度有興趣的人可以參考 http://www.beanshell.org/manual/quickstart.html ----------------------------------------------------- zscript 是 zul 之所以可以 fast prototyping 一個很重要的工具, 雖然因為要解析所以他的效率是差很多的, 但是對於要快速建構出一個能用跟能測試的範本, zscript 是功不可沒的。 另外 zscript 還有一個常見的變形,就是關於event handling 的部份。 <button label="clickme" onClick="alert(event.target);" /> 標色的這一段,也是個 zscript ,雖然這非常合理, 不過沒人提的話,通常是不太有人會注意到的, 想想看如果沒有 zscript,寫寫小功能的zul會有多麻煩。:P 先寫到這吧,zscript 其實還有一些有趣的應用, 比方說在zscript 定義函式讓 event handler 調用, 像是這樣的例子。 <zk> <zscript> public void sayHi(){ alert("hi"); } </zscript> <button label="clickme" onClick="sayHi()" /> </zk> -- 今天的介紹到這裡~咱們下期再會 -- I am a person, and I am always thinking . Thinking in love , Thinking in life , Thinking in why , Thinking in worth. I can't believe any of what , I am just thinking then thinking , but worst of all , most of mine is thinking not actioning... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.83.16.11 ※ 編輯: TonyQ 來自: 111.83.16.11 (12/12 18:52)
lovelycateye:完蛋了,我忘光了 囧> 12/12 23:44
slalala:這些之前有寫過:D 題外話 效能問題的話 zul應該最後也是編 12/12 23:57
slalala:譯成servlet吧? 12/13 00:18
TonyQ:nope. zul 就是zul ,他會透過一隻parser 進行解譯. 12/13 00:29
TonyQ:zul基本上你可以看成spring 的bean config 只是一群定義檔 12/13 00:31
slalala:如果是這樣效能真的會差很多耶 12/13 00:47
TonyQ:高興的話寫 Richlet 也可以啦... 12/13 02:37
以zscript來講,以composer取代的確可以增加一定幅度的效能。 ※ 編輯: TonyQ 來自: 220.133.44.37 (12/13 10:23)