JSF Tree2 实践

通过一次小小的实践,终于了解如何使用tomahawk中的tree2这个组件了,并且写了小段程序,从xml中读取树的结构,生成一个tree,不过tree2不能直接和xml绑定是一个遗憾,那样就会省不少事情了。记下一点心得,以供后来参考了。

tree2的操作分为两部分,一部分是在页面中通过tag定义样式相关的东西,一部分就是通过编程添加树的节点,起初看了sample以后总是以为这东西有多么的复杂,其实逻辑是很简单的,只是sample中定义了多种不同的样式的节点,看上去很复杂而已。

下面附上我对sample简化过的这段tag来说明一下。

<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的根节点和一些相关的参数。嵌套的那个facet定义了一种节点的样式,包括展开与关闭时的图片,以及显示的文字内容。

在程序里面,我们root TreeNodeBase = new TreeNodeBase(…)来创建一个root节点,然后通过root.getChildren().add(new TreeNodeBase(…))为其添加子节点,任何一个节点都可以添加任意多的子节点,通过这样的操作,我们可以很容易的生成一个tree的结构了,实际上,这个tree的结构是通过递归从xml中读取出来,生成一个和xml tree完全相同的结构。

除了明白如何去用这个tree2之外的收获就是,终于明白了如何去通过递归方法遍历一个树形结构,虽然在学校里学过遍历的算法,也抄过例程,但从来没有理解过是怎么一回事,终于在实践中理解了,实践才是软件的根本之道。

程序的其它部分放在附件里面了,如果有兴趣了可以和我讨论tree2,讨论其它JSF的东西。
http://www.blogjava.net/Files/steady/catalog.rar

posted on 2005-12-01 09:26 steady 阅读(471) 评论(8) 编辑 收藏 收藏至365Key 所属分类: J2EE Web Tier
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://www.blogjava.net/steady/archive/2005/12/01/22068.html" dc:identifier="http://www.blogjava.net/steady/archive/2005/12/01/22068.html" dc:title="JSF Tree2 实践" trackback:ping="http://www.blogjava.net/steady/services/trackbacks/22068.aspx" /> </rdf:RDF> --><!--done-->
FeedBack:
# re: JSF Tree2 实践
2005-12-03 15:06 | 山人
你好,请问如何在字节点上设置超链接。比如点树的任一节点我想让页跳到我指定的页(x.jsp?id=123).
急用,请老兄帮帮忙.
我的email:taoyinzhou@hotmail.com
# re: JSF Tree2 实践
2005-12-04 10:15 | steady
附上我页面的代码:
http://www.blogjava.net/Files/steady/catalogview.rar
我是用commandLink来做的链接,按照你的要求,可以用outputLink来做链接。
把我相应的代码替换掉就可以了。
后面的id=XXX,是在<f:param>里面指定的并且嵌套在outputLink里面。
# re: JSF Tree2 实践
2005-12-10 08:40 | 山人
你好,我那个问题如你说的已经解决了。

我是在做一个翻版的项目,以前是我用.net做(asp.net+C#+NHibernate+sqlServer)的,现要把它做成跨平台的java版,所以选用了jsf(myfaces)+spring+hibernate方案。整了快一个月了,终于调试通过了用户认证和功能树生产(数据库用mysql),感觉java是比.net复杂多了。
今天开始学用myfaces的dataScroller组件。
# re: JSF Tree2 实践
2005-12-10 14:04 | steady
在现阶段,JSF在标准,实现,工具支持,第三方组件上要比ASP.NET差不少,特别是扩展,除了tomahawk好一点外就没有太多又免费又好用的组件了。工具上,我目前看到最好用的就是BEA Workshop Studio(M7 NitroX),最新版本是 3.0M2,支持最新发布的tomahawk的所有组件,可视化编辑功能也比较好。
# re: JSF Tree2 实践
2005-12-10 14:32 | 山人
没有用过 BEA Workshop Studio(M7 NitroX) ,我现在用eclipse3.1+myEclipse4.0(破解版).
JSF Myaces(tomahawk)虽然目前资源不多,不过我还是看好的。
# re: JSF Tree2 实践
2005-12-10 16:45 | steady
我们这里做项目时用的是Exadel,感觉是对JSF支持的算是仅次于Workshop,目前来看MyEclipse感觉还是比较适合做struts时代的东西。
# re: JSF Tree2 实践
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时出现如上错误,不知如何解决。
我把部门表生成tree2树显示,在新增和修改节点时显示正常;但我在删除节点时如果当前节点下有两个以上的子节点运行正常,当其下只有一个子节点时就出以上错误了。
这个错误出现后我关闭IE从新再打开此页,功能树又显示正常了。
# re: JSF Tree2 实践
2005-12-20 18:15 | steady
在Myfaces的JIRA上有这样的错误报告,我也碰到过的,是一个bug,现在新的nightly build中没有这样的问题,但因为不是一个release版本,所以其他地方可能会有一些bug。
# re: JSF Tree2 实践
2005-12-21 09:38 | 山人
谢谢
问题解决了。我下了一个 myfaces-20051215 版本测试正常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值