java随记

坚持就是胜利!

 

jsf1.2 自定义日历组件

开发自己的jsf组件并不是一件容易的事情,因为jsf组件对于应用程序员来说还是过于复杂跟耗费时间了。开发不依赖于具体实现jsf-api的第三方jar包的组件就更不容易了,要做的工作比较的多.本例参照了一个jsf1.1组件的开源跟jsf1.2-RI的源码,理论上应该是可以通用的组件,并且是一个实用的基于jsf1.2的日历组件。.因为源码太长,不方便在这里一一贴出来,只好简略介绍一下各个类的功能,及一些配置了,感兴趣的朋友可以从附件里下载.如果要用在别的地方可以自己打个jar包.jsf自定义组件至少需要三个类:
  处理标签属性的类com.sun.faces.metal.MetalCalendarTag,维护状态处理输入的类com.sun.faces.metal.MetalCalendar和一个外部呈现器类com.sun.faces.metal.MetalCalendarRenderer(其中addRequiredMessage(FacesContext context, MetalCalendar cal)之类的方法很有趣,定义了<h:message> 标签的一些类容),这里着重说明一下标签处理类,因为jsf1.2跟jsf1.1的实现有些不一样,原因是jsf1.2使用了统一的EL语言。
Jsf1.2中所有的自定义标签的属性都是一个javax.el.ValueExpression的实例,所有的方法绑定都是一个javax.el.MethodExpression的实例,不再需要去创建一个ValueBinding和MethodBiding.关于这一点可以参考网上的jsf1.2新特性的文档。com.sun.faces.metal.HtmlBasicRenderer类很干脆,直接从jsf1.2-RI中copy过来略加改动,是com.sun.faces.metal.MetalCalendarRenderer的超类。
com.sun.faces.metal.metl. StaticResourcePhaseListener类一个事件监听类,它的作用是把一些js,css,图像文件等输出到客户端,以定制组件的外观,而不是在呈现器类中通过writerAttribute(“img”,”tt.gif”,”img”)之类的通过图象的URL去定位这个文件。这样的目的只有一个,就是文件打成jar包,以便供第三方使用。
 com.sun.faces.metal.util.FacesMessage类很也很干脆从javax.faces.application.FacesMessage类继承而来,实际上只是为了改变下一FACES_MESSAGES 属性,使之看起来像这样public static final String FACES_MESSAGES = "com.sun.faces.metal.util.Messages"; com.sun.faces.metal.util包中有两个Messages.properties属性文件,一个是针对中文的.
com.sun.faces.metal.util.FacesMessageFactory类也只是从jsf1.2-ri包中复制过来的.这样我们就可以完全不依赖jsf-api的实现而定义了自己的message属性.
剩下的就是一些辅助类了,也还算容易看的懂.
原本应该很庸长的一些叙述在这里极度浓缩了,简直就是没法理解的,好在如果有自定义jsf组件的基础,源码也应该还看得懂.源码下载

posted on 2007-10-08 10:58 傻 瓜 阅读(2879) 评论(5)  编辑  收藏 所属分类: Java Server Faces

评论

# re: jsf1.2 自定义日历组件 2007-10-08 11:44 千里冰封

不错,JSF写自定义日历,不容易  回复  更多评论   

# re: jsf1.2 自定义日历组件[未登录] 2008-03-17 10:47 dolphin

good.............very. 学习  回复  更多评论   

# re: jsf1.2 自定义日历组件 2008-04-20 21:43 阿德

非常感谢LZ 分享!  回复  更多评论   

# re: jsf1.2 自定义日历组件 2008-07-04 10:35 spear

我打包引入到项目后,该如何配置呢?  回复  更多评论   

# re: jsf1.2 自定义日历组件 2008-07-07 15:31 87

如果引入到项目的话,所配置拷过去就行了.如果打包成jar文件直接放到web-inf/lib下的话,请参考jsf相关文档,看看怎么打包的  回复  更多评论   


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


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

导航

统计

常用链接

留言簿(7)

我参与的团队

随笔分类

随笔档案

文章分类

友情链接

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜