寧靜以思遠

          Java使人內心寧靜

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            8 Posts :: 0 Stories :: 17 Comments :: 0 Trackbacks

          2007年3月20日 #

          以前在公司,平臺組已經把組件都給我們開發好了,對于界面沒有花太多的時間研究。近日想自己做個小系統,還是用比較擅長的JSF+Hibernate+Spring。考慮Facelet的模板功能,這次想嘗試一下。結果,一個Tree2就把我納悶了好一會。
          從網上找了篇文章,試著依樣畫葫蘆,做了模板頁,分top,left,content三塊布局,left自然就是tree2菜單了。
          首先看一下模板頁:
          template.xthml
          1 <div id="left">
          2          <ui:insert name="left">
          3                     <ui:include src="leftmenu.xhtml"></ui:include>
          4          </ui:insert>
          5 </div>
          6 <div id="content" class="left_content">
          7          <ui:insert name="content">Content</ui:insert>
          8 </div>
          其中左邊菜單:
          leftmenu.xhtml
           1 <t:tree2 id="serverTree" value="#{calendarBean.treeData}" var="node" varNodeToggler="t" clientSideToggle="false" showRootNode="true">
           2                            
           3                             <f:facet name="document">
           4                                 <h:panelGroup>
           5                                     <h:commandLink immediate="true" styleClass="#{t.nodeSelected ? 'documentSelected':'document'}" action="link_page" actionListener="#{t.setNodeSelected}">
           6                                         <t:graphicImage value="/images/document.png" border="0"/>
           7                                         <h:outputText value="#{node.description}"/>
           8                                         <f:param name="docNum" value="#{node.identifier}"/>
           9                                     </h:commandLink>
          10                                 </h:panelGroup>
          11                             </f:facet>
          12  </t:tree2>
          其中backingBean代碼如下,配置有效范圍為session
          public class calendarBean {

              
          private TreeData treeData;

              
          private Date secondDate;

              
          public Date getSecondDate() {
                  
          return secondDate;
              }

              
          public void setSecondDate(Date secondDate) {
                  
          this.secondDate = secondDate;
              }

              
          public TreeData getTreeDate() {
                 
          if (null == treeData) {
                      TreeNode treeData 
          = new TreeNodeBase("foo-folder""Inbox"false);
                      ......
                 }
                 
          return treeData;
          }
          ......
          }

          這里為了方便測試,故意把commandLink的action指向link_page導航,link_page配置為:
          1 <navigation-rule>
          2     <from-view-id>/treeSample2.xhtml</from-view-id>
          3     <navigation-case>
          4         <from-outcome>link_page</from-outcome>
          5       <to-view-id>/treeSample2link.xhtml</to-view-id>
          6     </navigation-case>
          7   </navigation-rule>
          treeSample2.xhtml和treeSample2link.xhtml分別為兩個使用了template.xhtml模板的頁面,顯然它們都用到了菜單。

           運行后,首先打開treeSample.xhtml,非常成功,菜單出來了,而且由于使用了Server端樹,每次打開子節點,都會提交到服務器,頁面刷新后,除了正在操作的節點,其他節點也都保持原來的狀態。

          但是,當我點擊節點,跳轉到treeSample2link.xhtml時,問題出來,所有節點都折疊起來,而并沒有保持我原來頁面的狀態。這說明從一個頁面跳轉到另一個頁面時,節點狀態并沒有被傳遞過去。
          有些想不明白,既然backingbean是session的,為什么沒有記錄節點的狀態呢?網上搜了些資料,很少有提到關于狀態的。myface的wiki中似乎也找不到類似的問題。無奈之下,只能直接看tree2的代碼,終于發現了問題所在。原來我有個TreeState接口存儲節點狀態的,而它又是被set到treeModel的,而我的代碼中只使用了treeData,沒有給它包裝成treeModel。Tree2中提供了treeModel的一個實現treeModelBase,直接使用就可以了。于是乎,改一下代碼:
           1 public class calendarBean {
           2   
           3       private TreeModel personTreeModel;
           4   
           5       public TreeModel getPersonTreeModel() {
           6           if (null == personTreeModel) {
           7               TreeNode treeData = new TreeNodeBase("foo-folder""Inbox"false);
           8                  
           9               personTreeModel = new TreeModelBase(treeData);
          10           }
          11         return personTreeModel;
          12     }
          13  
          14 }
          改一下綁定:
          1  <t:tree2 id="serverTree" value="#{calendarBean.persontreeModel}" 
          測試一下,果然,無論怎么鏈接,依然保持良好的狀態,呵呵。
          posted @ 2009-12-10 00:02 Aaronbamoo 閱讀(1310) | 評論 (4)編輯 收藏

          上次發博還是07年9月的事,那時我還在運營商,這時自己私下再學Java,偶爾上來寫點心得。沒想過了幾個星期,我轉身離開運營商,來到了設備商做研發,終于如愿能做些自己喜歡做的工作了,但是忙碌的工作之余,卻忘記了再來寫點什么。而兩年不到的時間,我又再次回到了另一個運營商,發現還是放不下在研發的日子,又開始想做點什么。于是乎,又開始想寫點什么。這好比一個輪回,其中的得失,只有自己明白。
          posted @ 2009-12-09 23:16 Aaronbamoo 閱讀(152) | 評論 (0)編輯 收藏

          /home/aaron/Desktop/Screenshot.png
          posted @ 2007-09-05 22:16 Aaronbamoo 閱讀(394) | 評論 (0)編輯 收藏

          1,ArrayList的Generics
          public class ArrayListGenericDemo 
            
          public static void main(String[] args) 
              ArrayList
          <String> data = new ArrayList<String>(); 
              data.add(
          "hello"); 
              data.add(
          "goodbye"); 
              
          // data.add(new Date()); This won't compile! 
              Iterator<String> it = data.iterator(); 
              
          while (it.hasNext()) 
                String s 
          = it.next(); 
                System.out.println(s); 
              }
           
            }
           
          }
           
          2,HashMap的Generics
          public class ArrayListGenericDemo 
            
          public static void main(String[] args) 
              ArrayList
          <String> data = new ArrayList<String>(); 
              data.add(
          "hello"); 
              data.add(
          "goodbye"); 
              
          // data.add(new Date()); This won't compile! 
              Iterator<String> it = data.iterator(); 
              
          while (it.hasNext()) 
                String s 
          = it.next(); 
                System.out.println(s); 
              }
           
            }
           
          }
           
          posted @ 2007-07-16 11:07 Aaronbamoo 閱讀(190) | 評論 (0)編輯 收藏

                 盡管EJB2.0自出生就帶來了很多非議,但是<head first EJB>仍然值得拜讀,原本一直被外界的評論所影響,不敢碰關于EJB的東西,剛剛在CSDN上學習了前幾章,發現原來EJB雖然有些復雜,但是也不是高不可攀。今天正好把第三章看完,明天就有朋友幫我把書帶來了,繼續奮斗!
                 盡管過多的不相關工作延緩了Java的學習進程,但是只要堅持信仰,不斷努力,一定會看到希望!
          posted @ 2007-05-23 18:08 Aaronbamoo 閱讀(416) | 評論 (4)編輯 收藏

          ??? 最近在寫Hibernate+struts的程序,發現為了完成一個查詢功能,廢的勁還真不少,總感覺很不爽。真不知道它好在哪里,繼續學習<深入淺出Hibernate>。

          posted @ 2007-03-25 22:40 Aaronbamoo 閱讀(240) | 評論 (0)編輯 收藏

               摘要: [IBM developerWorks 中國 ?] 本文講述了如何利用Java的反射的機制來簡化Structs應用程序的開發。 Struts中引入ActionForm類的意義與缺陷: 在Struts應用程序中,ActionForm是一個很重要的概念,它的主要功能就是為Action的操作提供與客戶表單...  閱讀全文
          posted @ 2007-03-21 10:05 Aaronbamoo 閱讀(210) | 評論 (1)編輯 收藏

          ??? 快速學習了一遍《head first servlet/jsp》,發現再次去回顧struts的核心技術,變得那么容易理解。昨天再一次調試開發struts實例,寫完后一次性運行成功,哈哈,盡管很簡單的程序,還是很爽!
          ??? 今天把validation框架又加入到struts,再次運行成功,不過化了不少時間調試,一個很低級的錯誤,action的配置中忘了加屬性validate="true",怪不得總是沒有驗證就直接轉發。希望朋友們別犯同樣的錯誤,呵呵!
          ??? 在西安已經呆了快半個月了,有點喜歡上這個城市,相比南方城市的柔美,這里多了幾分人文的大氣。很喜歡和這里的人們交談,帶著陜西口音的普通話總是很耐聽;很喜歡這里的飲食,不需要化太多的錢,就能吃上地道的西安小吃;很喜歡這里的街道,直來直往,永遠都不會迷路。不斷挖掘西安的文明,將是上課之余一件令人興奮的事。
          posted @ 2007-03-20 16:47 Aaronbamoo 閱讀(1201) | 評論 (8)編輯 收藏

          主站蜘蛛池模板: 会同县| 祁东县| 石阡县| 兴仁县| 拜城县| 温宿县| 吕梁市| 资源县| 额济纳旗| 昌平区| 闽清县| 新源县| 洪洞县| 普陀区| 龙门县| 淅川县| 江油市| 察雅县| 剑阁县| 廉江市| 钦州市| 文成县| 遂川县| 布尔津县| 合水县| 永丰县| 滦平县| 隆化县| 南宁市| 铜陵市| 台南县| 潢川县| 库伦旗| 仪陇县| 丰镇市| 平顶山市| 湄潭县| 尚义县| 淮南市| 泌阳县| 祁阳县|