随笔-112  评论-73  文章-0  trackbacks-0

这两天项目进行了到了菜单组件的开发.把能使用的JSF的Tree组件都翻了个遍,试了个遍.没有中意的.要不是太复杂就是太难用.(好象差不多一个意思^_^).最后决定自己开发一个Tree组件.

有如下功能:

1、数据要能够与bean联系起来,因为菜单是动态的从数据库里取出来或动态生成的;

2、要无限级次的(其实有点变态,那有那么层次的菜单);

3、要是DIV+CSS的,不要table的(这么多大的、知名的JSF组件为什么都是table布局呢?难道他们和我一样不会用DIV?^_^)

...

在网上一找,有一个DIV+CSS的tree组件出现了。在 http://cnlei.iecn.net/ 

下来源码一看很清晰。连我这不懂CSS的也看得明白了一大半。决定就对它进行改造。生成JSF的组件。

在开发的过程中有一些要记录的:

1、JSF1.2的组件开发和JSF1.1有的很大的不同。尤其是EL表达式。而且是extends的基类也不同。

JSF1.2中的TagLib要继承javax.faces.webapp.UIComponentELTag。


2、TagLib接受的属性只能是ValueExpression类型。如果需要用字符型。需要再进行处理。不象JSF1.1中有方法判断是表达式还是值。

接受表达的值,并给组件赋值:

private ValueExpression value;

...

  if (value != null)
   component.setValueExpression("value", value);
如果要接受字符串的属性要这样得到字符串的值。

  if (id != null) {
   component.setId(id.getExpressionString());
  }


3、如果想把组件在Facelets中应用,要写Renderer。(至少我是这样,不写Renderer在Facelets中就不能应用。但在JSP中可以使用)还要写一个componets.tablib.xml。

在Renderer中得到表达式的值:

ValueExpression valueVe = component.getValueExpression("value");
  if (valueVe != null) {
   Object _object = valueVe.getValue(context.getELContext());

//...
}

4、要在faces-config.xml中配置component 和render-kit.


总之写JSF的组件是很麻烦的事情。如果有其他的选择还是不要自己写。但是写好之后用起却是非常的方便的。

<xy:tree value="#{menuBean.nodes}" title="#{resource.menu_title}"/>

一句话就可以生成一树。很爽吧!


 



附源码(Eclipse 工程) 下载源码

源码中没有相关jar 包,加在一起太大了没办法上传。用到的jar包如下:
commons-beanutils.jar
commons-codec.jar
commons-collections.jar
commons-digester.jar
commons-el.jar
commons-fileupload.jar
commons-lang.jar
commons-logging.jar
commons-validator.jar
jakarta-oro.jar
javaee.jar
jsf-api.jar
jsf-impl.jar
jstl-1.2.jar
jstl.jar
log4j-1.2.8.jar
如果有没办法找到可以给我发Email:wfn_libo # 163.com
posted on 2007-08-11 19:43 Libo 阅读(2189) 评论(4)  编辑  收藏 所属分类: JavaServer Faces

评论:
# re: JSF1.2组件 基于DIV+CSS的Tree[未登录] 2007-08-13 11:50 | wzjin
建议代码共享!  回复  更多评论
  
# re: JSF1.2组件 基于DIV+CSS的Tree 2007-08-16 15:46 | ginkgo
同意楼上的观点,希望可以看到代码,对学习有很大的帮助。  回复  更多评论
  
# re: JSF1.2组件 基于DIV+CSS的Tree 2007-08-16 22:41 | 鱼肠剑
现在还在项目中应用.并没有独立出来.过一段时间充裕一些把它独立出来.有什么建议可以EMAIL :wfn_libo@163.com  回复  更多评论
  
# re: JSF1.2组件 基于DIV+CSS的Tree 更新源码 2009-02-06 16:33 | Libo
感谢大家的关注。现在才附上源码,有点晚啊 ! 呵。。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: