-
FEATURED COMPONENTS
First time here? Check out the FAQ!
以前用ZK3.x写的代码,移植到ZK5,其中有一段:
Window winDialog = (Window)evt.getPage().getDesktop().getExecution().createComponents("x.zul",null,null);
winDialog.doModal();
xxDao.getList();
以前是可以在winDialog打开的时候,处于等待状态,关闭后,再执行xxDao.getList()。
现在是winDialog打开后直接就执行了xxDao.getList(),我并没有设定doHighlight等功能,不知道该如何解决?
@cchhcui
您好 cchhcui ,目前ZK5還不是很穩定,可以的話建議還是使用3.6.3。
關於您發生的問題,是否方便提供簡單的測試code讓我們協助您?從這三行程式碼中,我不太清楚為什麼xxDao.getList()會關閉後才發生,除非doModal有做一些事...
/Joy
你好!我建立了一个新project,把相关代码copy进来,可以复现这个问题,请问如何发送给你?
我的邮箱是:cchh_cui AT 163 dot com
@cchhcui
由於你的寫法是用GenericComposer,跟現在的GenericForwardComposer已經有不少差異(主要是Lifecycle之類,呼叫與創建事件的時間點不同)。
大概測了一下你的code,目前有種簡單的方式提供您參考:
宣告一個eventlistener,將之註冊在winDialog上,讓onSave跟onExit被觸發時也會呼叫到這個eventListener的內容。
EventListener evtListener = new EventListener() { @Override public void onEvent(Event arg0) throws Exception { // TODO Auto-generated method stub AllListDao.getList(win); } }; public void onAdd(Event evt) { ... winDialog.addEventListener("onSave", evtListener); winDialog.addEventListener("onExit", evtListener); winDialog.doModal(); ... }
額外的建議,如果您的getList是為了listbox顯示資料,建議採用model替您完成。ListModel能妥善的管理listbox中的資料,
且有提供invalidate()方法能有效率的更新listbox內的資料。(你可以選擇重新select一次資料,或是直接取得已經select好的)
。
Regards
/Joy
@cchhcui
數據量其實並不在Model考慮的範圍內,這是SQL該去解決的問題,但是透過Model,他會有類似queue的效果(queue之於java就像view之於database)。
如果你要針對同一百筆資料做多次的修改或查詢,Model可以讓你重新整理頁面的時候不需要再去資料庫查一次,相信這能節約不少效能。
就實作面來說,就算你的database有上百萬筆資料,user每次需要看的部分也不過幾十或幾百筆,最多大概也是上千筆,在這樣的情況下,使用Model增進的
程式效率是可觀的(想想user如果查100次,SQL查100次所需要的時間吧。),這部分你可以比較看看。
有任何問題都歡迎上來論壇發問,祝您開發愉快^^
/Joy
Asked: 2009-11-19 04:22:25 +0800
Seen: 719 times
Last updated: Nov 20 '09