隨筆 - 170  文章 - 536  trackbacks - 0
          <2005年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          我參與的團(tuán)隊(duì)

          隨筆分類(lèi)(103)

          搜索

          •  

          積分與排名

          • 積分 - 415097
          • 排名 - 135

          最新評(píng)論

          閱讀排行榜

          通過(guò)一次小小的實(shí)踐,終于了解如何使用tomahawk中的tree2這個(gè)組件了,并且寫(xiě)了小段程序,從xml中讀取樹(shù)的結(jié)構(gòu),生成一個(gè)tree,不過(guò)tree2不能直接和xml綁定是一個(gè)遺憾,那樣就會(huì)省不少事情了。記下一點(diǎn)心得,以供后來(lái)參考了。

                   對(duì)tree2的操作分為兩部分,一部分是在頁(yè)面中通過(guò)tag定義樣式相關(guān)的東西,一部分就是通過(guò)編程添加樹(shù)的節(jié)點(diǎn),起初看了sample以后總是以為這東西有多么的復(fù)雜,其實(shí)邏輯是很簡(jiǎn)單的,只是sample中定義了多種不同的樣式的節(jié)點(diǎn),看上去很復(fù)雜而已。

          下面附上我對(duì)sample簡(jiǎn)化過(guò)的這段tag來(lái)說(shuō)明一下。

          <t:tree2 value="#{catalog.node}" var="node" id="clientside" varNodeToggler="t" >

              <f:facet name="folder">

                  <h:panelGroup>

                      <f:facet name="expand">

                          <t:graphicImage value="images/yellow-folder-open.png" rendered="#{t.nodeExpanded}" border="0"/>

                      </f:facet>

                      <f:facet name="collapse">

                          <t:graphicImage value="images/yellow-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>

                      </f:facet>

                      <h:outputText value="#{node.description}"/>

                  </h:panelGroup>

              </f:facet>

          </t:tree2>

          tree2的主tag定義了tree的根節(jié)點(diǎn)和一些相關(guān)的參數(shù)。嵌套的那個(gè)facet定義了一種節(jié)點(diǎn)的樣式,包括展開(kāi)與關(guān)閉時(shí)的圖片,以及顯示的文字內(nèi)容。

          在程序里面,我們root TreeNodeBase = new TreeNodeBase(…)來(lái)創(chuàng)建一個(gè)root節(jié)點(diǎn),然后通過(guò)root.getChildren().add(new TreeNodeBase(…))為其添加子節(jié)點(diǎn),任何一個(gè)節(jié)點(diǎn)都可以添加任意多的子節(jié)點(diǎn),通過(guò)這樣的操作,我們可以很容易的生成一個(gè)tree的結(jié)構(gòu)了,實(shí)際上,這個(gè)tree的結(jié)構(gòu)是通過(guò)遞歸從xml中讀取出來(lái),生成一個(gè)和xml tree完全相同的結(jié)構(gòu)。

          除了明白如何去用這個(gè)tree2之外的收獲就是,終于明白了如何去通過(guò)遞歸方法遍歷一個(gè)樹(shù)形結(jié)構(gòu),雖然在學(xué)校里學(xué)過(guò)遍歷的算法,也抄過(guò)例程,但從來(lái)沒(méi)有理解過(guò)是怎么一回事,終于在實(shí)踐中理解了,實(shí)踐才是軟件的根本之道。
             程序的其它部分放在附件里面了,如果有興趣了可以和我討論tree2,討論其它JSF的東西。
             http://www.aygfsteel.com/Files/steady/catalog.rar

          posted on 2005-12-01 09:26 steady 閱讀(10340) 評(píng)論(32)  編輯  收藏 所屬分類(lèi): JSF & Myfaces

          FeedBack:
          # re: JSF Tree2 實(shí)踐 2005-12-03 15:06 山人
          你好,請(qǐng)問(wèn)如何在字節(jié)點(diǎn)上設(shè)置超鏈接。比如點(diǎn)樹(shù)的任一節(jié)點(diǎn)我想讓頁(yè)跳到我指定的頁(yè)(x.jsp?id=123).
          急用,請(qǐng)老兄幫幫忙.
          我的email:taoyinzhou@hotmail.com  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2005-12-04 10:15 steady
          附上我頁(yè)面的代碼:
          http://www.aygfsteel.com/Files/steady/catalogview.rar
          我是用commandLink來(lái)做的鏈接,按照你的要求,可以用outputLink來(lái)做鏈接。
          把我相應(yīng)的代碼替換掉就可以了。
          后面的id=XXX,是在<f:param>里面指定的并且嵌套在outputLink里面。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2005-12-10 08:40 山人
          你好,我那個(gè)問(wèn)題如你說(shuō)的已經(jīng)解決了。

          我是在做一個(gè)翻版的項(xiàng)目,以前是我用.net做(asp.net+C#+NHibernate+sqlServer)的,現(xiàn)要把它做成跨平臺(tái)的java版,所以選用了jsf(myfaces)+spring+hibernate方案。整了快一個(gè)月了,終于調(diào)試通過(guò)了用戶(hù)認(rèn)證和功能樹(shù)生產(chǎn)(數(shù)據(jù)庫(kù)用mysql),感覺(jué)java是比.net復(fù)雜多了。
          今天開(kāi)始學(xué)用myfaces的dataScroller組件。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2005-12-10 14:04 steady
          在現(xiàn)階段,JSF在標(biāo)準(zhǔn),實(shí)現(xiàn),工具支持,第三方組件上要比ASP.NET差不少,特別是擴(kuò)展,除了tomahawk好一點(diǎn)外就沒(méi)有太多又免費(fèi)又好用的組件了。工具上,我目前看到最好用的就是BEA Workshop Studio(M7 NitroX),最新版本是 3.0M2,支持最新發(fā)布的tomahawk的所有組件,可視化編輯功能也比較好。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2005-12-10 14:32 山人
          沒(méi)有用過(guò) BEA Workshop Studio(M7 NitroX) ,我現(xiàn)在用eclipse3.1+myEclipse4.0(破解版).
          JSF Myaces(tomahawk)雖然目前資源不多,不過(guò)我還是看好的。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2005-12-10 16:45 steady
          我們這里做項(xiàng)目時(shí)用的是Exadel,感覺(jué)是對(duì)JSF支持的算是僅次于Workshop,目前來(lái)看MyEclipse感覺(jué)還是比較適合做struts時(shí)代的東西。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2005-12-20 17:13 山人
          java.lang.IllegalStateException: Encountered a node [0] + with an illogical state. Node is expanded but it is also considered a leaf (a leaf cannot be considered expanded.
          我在用tree2時(shí)出現(xiàn)如上錯(cuò)誤,不知如何解決。
          我把部門(mén)表生成tree2樹(shù)顯示,在新增和修改節(jié)點(diǎn)時(shí)顯示正常;但我在刪除節(jié)點(diǎn)時(shí)如果當(dāng)前節(jié)點(diǎn)下有兩個(gè)以上的子節(jié)點(diǎn)運(yùn)行正常,當(dāng)其下只有一個(gè)子節(jié)點(diǎn)時(shí)就出以上錯(cuò)誤了。
          這個(gè)錯(cuò)誤出現(xiàn)后我關(guān)閉IE從新再打開(kāi)此頁(yè),功能樹(shù)又顯示正常了。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2005-12-20 18:15 steady
          在Myfaces的JIRA上有這樣的錯(cuò)誤報(bào)告,我也碰到過(guò)的,是一個(gè)bug,現(xiàn)在新的nightly build中沒(méi)有這樣的問(wèn)題,但因?yàn)椴皇且粋€(gè)release版本,所以其他地方可能會(huì)有一些bug。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2005-12-21 09:38 山人
          謝謝
          問(wèn)題解決了。我下了一個(gè) myfaces-20051215 版本測(cè)試正常  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-04 09:48 山 人
          你好,我在用戶(hù)登錄以后,想記錄下用戶(hù)名、用戶(hù)ID、等信息,以備在登錄后的其它頁(yè)面中可以取出用戶(hù)ID。在用純jsp(java代碼寫(xiě)在jsp頁(yè)中)寫(xiě)代碼時(shí),可以在登錄頁(yè)面后把ID等定義為session如下:
          session.putValue("UserID", Integer.toString(intUSERID)); //用戶(hù)ID
          session.putValue("UserName",User_Name);//用戶(hù)登錄名
          session.putValue("UserGroupID","0");//用戶(hù)組ID
          我在登錄后的其它頁(yè)面中只用取出以上session就OK了。

          請(qǐng)問(wèn)在jsf中實(shí)現(xiàn)同樣的功能應(yīng)該如何做?配置如下,已經(jīng)可以定義session,只是不清楚在登錄后的其它Bean中如何取出session,因?yàn)槲业墓δ軜?shù)要根據(jù)誰(shuí)登錄的取對(duì)應(yīng)的功能。

          <managed-bean>
          <description>
          用戶(hù)登錄
          </description>
          <managed-bean-name>sysLogin</managed-bean-name>
          <managed-bean-class>com.inphit.pms.web.system.SysLogin</managed-bean-class>
          <managed-bean-scope>session</managed-bean-scope>
          <managed-property>
          <property-name>serviceLocator</property-name>
          <value>#{ServiceLocatorImpl}</value>
          </managed-property>
          </managed-bean>  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-13 11:07 巨土無(wú)比
          你好,問(wèn)個(gè)基礎(chǔ)的問(wèn)題:
          rendered="#{t.nodeExpanded} 和 value="#{node.description} 里面的t和node是不是<t:tree2 value="#{catalog.node}" var="node" id="clientside" varNodeToggler="t" > 里面的var和varNodeToggler? 這兩個(gè)有什么區(qū)別嗎? nodeExpanded和description這兩個(gè)方法是在哪里定義的?  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-13 11:13 steady
          第一個(gè)var表示tree中的一個(gè)節(jié)點(diǎn),即backing bean中new出來(lái)的new TreeNodeBase("folder", name, id, false);
          varNodeToggler指的是當(dāng)前tree節(jié)點(diǎn)的狀態(tài),展開(kāi)或者關(guān)閉,可以參考javadoc中org.apache.myfaces.custom.tree2.TreeStateBase,這里使用了它的isNodeExpanded方法。   回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-13 11:33 巨土無(wú)比
          我寫(xiě)了一個(gè)簡(jiǎn)單樹(shù),但是無(wú)法展開(kāi),只能顯示根節(jié)點(diǎn),幫忙看看哪里的問(wèn)題:
          jsp:
          <f:view>
          <t:tree2 id="clientTree" value="#{tree.treeData}" var="node" varNodeToggler="t" showRootNode="false">
          <f:facet name="menu">
          <h:panelGroup>
          <f:facet name="expand">
          <t:graphicImage value="images/person.png" rendered="#{t.nodeExpanded}" border="0"/>
          </f:facet>
          <f:facet name="collapse">
          <t:graphicImage value="images/person.png" rendered="#{!t.nodeExpanded}" border="0"/>
          </f:facet>
          <h:outputText value="#{node.description}" styleClass="nodeFolder"/>
          </h:panelGroup>
          </f:facet>

          <f:facet name="item">
          <h:panelGroup>
          <h:commandLink immediate="true" styleClass="#{t.nodeSelected ? 'documentSelected':'document'}" actionListener="#{t.setNodeSelected}">
          <t:graphicImage value="images/document.png" border="0"/>
          <h:outputText value="#{node.description}"/>
          </h:commandLink>
          </h:panelGroup>
          </f:facet>
          </t:tree2>
          </f:view>
          -------------------------------------
          Tree.java:
          public TreeNode getTreeData()
          {
          TreeNode treeData = new TreeNodeBase("root", "根", false);

          // construct a set of fake data (normally your data would come from a database)

          // populate Frank's portion of the tree
          TreeNodeBase menuNode = new TreeNodeBase("menu", "產(chǎn)品管理", false);
          menuNode.getChildren().add(new TreeNodeBase("item", "錦囊", true));
          treeData.getChildren().add(menuNode);

          // populate Betty's portion of the tree
          menuNode = new TreeNodeBase("menu", "后綴管理", false);
          menuNode.getChildren().add(new TreeNodeBase("item", "神秘園", true));
          treeData.getChildren().add(menuNode);

          menuNode = new TreeNodeBase("menu", "用戶(hù)統(tǒng)計(jì)", false);
          menuNode.getChildren().add(new TreeNodeBase("item", "伊甸園", true));
          treeData.getChildren().add(menuNode);

          menuNode = new TreeNodeBase("menu", "其它", false);
          menuNode.getChildren().add(new TreeNodeBase("item", "預(yù)警設(shè)置", true));
          treeData.getChildren().add(menuNode);

          return treeData;
          }  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-13 11:34 巨土無(wú)比
          只能顯示:
          產(chǎn)品管理

          后綴管理

          用戶(hù)統(tǒng)計(jì)

          其它

          但是無(wú)法展開(kāi),點(diǎn)擊后沒(méi)有任何反應(yīng)  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-13 11:38 巨土無(wú)比
          現(xiàn)在可以了,剛才是用的firefox,現(xiàn)在用的是ie就可以了,有意思,還有這限制呢  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-13 11:51 steady
          Tree2本身并沒(méi)有這個(gè)問(wèn)題的,我一直是在FireFox下跑的,一直很正常,但是Myfaces 1.1.1版本的Tree2確實(shí)有bug,可以拿比較新的源碼Build一下,應(yīng)該能夠解決這個(gè)問(wèn)題。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-13 11:52 巨土無(wú)比
          又有問(wèn)題了,用ie的話(huà),如果刷新一下,又報(bào)錯(cuò)說(shuō)“網(wǎng)頁(yè)有錯(cuò)誤”,然后就又無(wú)法展開(kāi)了,只有新打開(kāi)一個(gè)ie或者在原來(lái)的ie上回車(chē)才可以正常顯示,請(qǐng)問(wèn)這是什么原因呢?  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-13 11:55 巨土無(wú)比
          最新的myfaces就是1.1.1啊,你是說(shuō)用nightly builds?我的qq:601998086,加我吧,聊起來(lái)方便,驗(yàn)證信息填myfaces吧,呵呵。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-01-14 07:52 kingwell
          tree2不是太穩(wěn)定
          做過(guò)兩個(gè)tree交互移動(dòng)其中一個(gè)tree的node到另外一個(gè)tree上面,有時(shí)候會(huì)發(fā)生illegalstate的問(wèn)題,感覺(jué)不是太穩(wěn)定  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-03-11 09:14 hunter
          tree2的value綁定javabean的屬性,那屬性類(lèi)型到底是TreeModel,還是TreeNode?在有的例子中用的是TreeNode(見(jiàn)上文),有的用TreeModel(見(jiàn)Tree2 Explained 解析Tree2一文)。
          我覺(jué)得應(yīng)該用TreeModel。  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-03-31 10:20 wanfan
          @巨土無(wú)比
          我像上面那樣做 也出現(xiàn)這樣的問(wèn)題 只能顯示根節(jié)點(diǎn) 不能顯示葉子節(jié)點(diǎn)   回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-04-26 11:00 128kj_com
          非常想與貴站做友情鏈接,誠(chéng)邀您到我站自助添加,立即生效,首頁(yè)顯示。
          http://www.128kj.com  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-05-23 13:36 huyan722
          @巨土無(wú)比
          你可能缺少Filter,我也遇到過(guò)這樣的問(wèn)題但是在web.xml中加入Filter后就解決了
          <filter>
          <filter-name>MyFacesExtensionsFilter</filter-name>
          <filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
          <init-param>
          <param-name>maxFileSize</param-name>
          <param-value>20m</param-value>
          <description>Set the size limit for uploaded files.
          Format: 10 - 10 bytes
          10k - 10 KB
          10m - 10 MB
          1g - 1 GB
          </description>
          </init-param>
          </filter>

          <!-- extension mapping for adding <script/>, <link/>, and other resource tags to JSF-pages -->
          <filter-mapping>
          <filter-name>MyFacesExtensionsFilter</filter-name>
          <!-- servlet-name must match the name of your javax.faces.webapp.FacesServlet entry -->
          <servlet-name>Faces Servlet</servlet-name>
          </filter-mapping>

          <!-- extension mapping for serving page-independent resources (javascript, stylesheets, images, etc.) -->
          <filter-mapping>
          <filter-name>MyFacesExtensionsFilter</filter-name>
          <url-pattern>/faces/myFacesExtensionResource/*</ url-pattern>
          </filter-mapping>
          如果你在項(xiàng)目中沒(méi)有使用到Myfaces的擴(kuò)展組件(t:開(kāi)頭的),則你不需要配置這個(gè)Filter.
          可是,如果你用了Myfaces的擴(kuò)展組件,你必須為你的web程序配置這個(gè)Filter.
            回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2006-11-18 20:54 jsf_beginner
          請(qǐng)問(wèn)例子的BaseBean是哪個(gè)包里的?
            回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2007-01-12 22:35 lion.huang
          你好,能把那個(gè)backbean原代碼傳我一份嗎?
          謝謝!
          email:lion_6@163.com
          QQ:262542058  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐[未登錄](méi) 2007-03-15 17:23 K
          請(qǐng)問(wèn)能不能給樹(shù)的節(jié)點(diǎn)加上右鍵菜單?  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2007-07-11 12:44 仙子
          用TREE2做一個(gè)帶選擇框的樹(shù),如何做到點(diǎn)上一級(jí)的選擇框,自動(dòng)點(diǎn)選下一級(jí)的選擇框  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐[未登錄](méi) 2007-09-19 00:02 simon
          麻煩給我發(fā)一份myfaces-20051215 ,simon_cheng1@hotmail.com
          多謝  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2007-11-14 17:10 wbaihp
          請(qǐng)問(wèn)我按照你們的說(shuō)法作了一下,為什么我的<t:graphicImage value="../images/yellow-folder-open.png"
          rendered="#{t.nodeExpanded}" border="0" />中提示
          t cannot be resolved  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2008-02-01 08:43 legend_only
          現(xiàn)在我展開(kāi)TREE2樹(shù)的根結(jié)點(diǎn),怎么才能做到呢???

          還有個(gè)問(wèn)題就是樹(shù)的結(jié)點(diǎn)展開(kāi)后,在關(guān)閉,前面的圖標(biāo)就不變了,還是展開(kāi)時(shí)的.
          頁(yè)面剛載入的時(shí)候是正確的,是關(guān)閉的圖標(biāo),展開(kāi)后就回不去了~~  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2008-05-20 13:55 bryan
          你好,我想問(wèn)一下的是我用
          <h:commandLink immediate="true" styleClass="#{t.nodeSelected ? 'documentSelected':'document'}" actionListener="#{t.setNodeSelected}"
          action="#{treeMenu.nodeClicked}" target="content">
          <t:graphicImage value="images/document.png" border="0"/>
          <h:outputText value="#{node.description}"/>
          <f:param name="nodeid" value="#{node.identifier}"/>
          </h:commandLink>

          在nodeClicked我用的是返回nodeid的值,再通過(guò)face-config.xml中的設(shè)置導(dǎo)航到一個(gè)頁(yè)面上,不知還有沒(méi)有更好的辦法?。肯胫滥愕膎odeClicked的事件代碼是怎樣???
          我現(xiàn)在的是用一個(gè)框架將主頁(yè)面分為三個(gè)部分,通過(guò)點(diǎn)擊樹(shù)形菜單導(dǎo)航到相應(yīng)的功能頁(yè)面  回復(fù)  更多評(píng)論
            
          # re: JSF Tree2 實(shí)踐 2008-05-20 13:56 bryan
          我的聯(lián)系郵箱chizeng@126.com  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 凤阳县| 塔河县| 白城市| 宜都市| 奉贤区| 宁远县| 青海省| 平江县| 黄山市| 香格里拉县| 拜泉县| 托克逊县| 广饶县| 绵阳市| 丁青县| 青河县| 屯留县| 集贤县| 伊通| 唐山市| 阿鲁科尔沁旗| 遂平县| 南召县| 锦州市| 武清区| 大渡口区| 简阳市| 十堰市| 太保市| 灌阳县| 芮城县| 梁平县| 元氏县| 如皋市| 绿春县| 馆陶县| 曲周县| 稷山县| 文化| 闻喜县| 睢宁县|