DT編譯成功了,Struts Menu從數據庫取數據組建菜單的試驗成功了......
這幾天又開始做技術實驗了,被折磨的有點情緒化,不過一切還算順利,多虧朋友們的幫忙!
昨晚在家讀DisplayTag的源代碼,發現DisplatyTag(以下簡稱DT)翻頁時候不是從緩存中讀取的數據,它又重新向數據庫發出請求,和我調試程序時發現的一樣,它的動作大致是這樣的:
向數據庫發送請求,一次讀取所有數據的所有字段(我強調"所有"字段,并不是select *,而是讀取你的語句中指定的全部的字段,我強調的是相對于lazy-load方式的部分讀?。?,然后根據pagesize(一頁顯示數據的行數)和當前頁號讀取數據的子集,當翻到其他頁時,又獲取所有數據的所有字段,再過濾出顯示的子集......,這樣的效率不是差,而是很差,我昨天看了一下DT的JIRA的文字,發現這個問題早在2004年的5月份就有人提出了,而那個人就是ValueList的作者,而且你還會發現很多開發者提供的改進方案和參考實現,而且DT的開發組也同意添加提高分頁效率的特性,但到現在也還沒有實現,有些讓人失望!據說ValueList對這方面做的很好,但ValueList的文檔太少了,而且集成到AppFuse中還要自己改寫模板,目前有些騎虎難下,明天開始折騰ValueList,希望一切順利,菩薩保佑,呵呵
今天試了一下從數據庫中讀取數據來生成Struts Menu的菜單,結果發現如果一頁中放入2個Struts Menu的菜單,則會有一個有問題,我看了一下源碼,發現是在一個js文件中的函數引起的,Struts Menu首先初始化菜單,然后擴展,在擴展的時候,把點擊的菜單寫到Cookies中,如果同一個頁面有2個的聲明,則第二個菜單的折疊的部分不能展開,我的一個同事折騰了將近一周,就是因為這個問題。
昨晚終于在倦兔的幫助下,使用Maven編譯DT成功了,這樣我可以放心的修改DT,然后編譯、打包。但我要權衡一下和改用ValueList的工作量,目前暫不打算修改DT了。
Maven把所有下載的jar文件放在Window的Documents and Settings/你的用戶名/.mave目錄下,你可以把其他人的這個目錄下的文件都拷貝過來(注意要保持原來的目錄結構)直接用就行了。
Matt Raible關于DT、ValueList、DataGrid的簡短介紹:http://raibledesigns.com/comments/rd/sunsets/there_s_a_new_sorting
兔八哥
2005-3-1 18:21
|