Just some sharing about java open source and life

Facelets 自定义组件

日期:2010-06-29 09:07 | 作者:JavaChen | 分类目录:JSF
165 views

facelets 可以定义模板,简化页面的编程.采用这个模板的思想,将一些标签组合在一起,就可以做成自定义组件了.将这组合起来的组件定义一个tag标签,然后在 xhtml中引入这个tag,这要比普通的JSP方式的tag方便多了.
要想引用自定义的tag要在web.xml中加入下面代码,当然如果你把该xml文件放到项目根路径或是jar包的根路径下的META-INF文件夹 下,jsf会自动搜索给你加载到jsf容器里.

<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>
/WEB-INF/tld/javachen.taglib.xml
</param-value>
</context-param>

在该里这样定义:

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE facelet-taglib PUBLIC
“-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN”
“http://java.sun.com/dtd/facelet-taglib_1_0.dtd”>
<facelet-taglib xmlns=”http://java.sun.com/JSF/Facelet”>
<namespace>http://techseed.com/components</namespace>
<tag>
<tag-name>BCNameConverter</tag-name>
<converter>
<converter-id>BCNameConvert</converter-id>
</converter>
</tag>

<tag>
<tag-name>date</tag-name>
<source>../templates/components/date.xhtml</source>
</tag>
</facelet-taglib>

该文件中定义先是定义了一个转化器标签,其转化器的id指向另一个配置文件faces-config.xml,在faces-config.xml有如下 定义:
<converter>
<converter-id>BCNameConvert</converter-id>
<converter-class>com.javachen.converters.BCNameConverter</converter-class>
</converter>

还定义了一个常规的日期控件标签,其引入了一个xhtml页面:

<?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN” ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<ui:composition xmlns=”http://www.w3.org/1999/xhtml”
xmlns:ui=”http://java.sun.com/jsf/facelets”
xmlns:h=”http://java.sun.com/jsf/html”
xmlns:f=”http://java.sun.com/jsf/core”
xmlns:a4j=”http://richfaces.org/a4j”
xmlns:rich=”http://richfaces.org/rich”
xmlns:techseed=”http://www.techseed.com.cn/jsf”
xmlns:s=”http://jboss.com/products/seam/taglib”>
<h:inputText id=”#{id}” onfocus=”#{oninputfocus}” onclick=”#{oninputclick}” size=”10″
value=”#{value}”>
<techseed:dateTimeConverter pattern=”yyyy-MM-dd” />
</h:inputText>
<script type=”text/javascript”>
bindCalendarDate(“#{techseed:clientId(id)}”);
</script>
</ui:composition>

只需要注意<ui:composition>标签和引入的命名空间就行,标签里面的内容就看你要完成的功能了。
然后,在页面上调用方式如下:

<ts:date id=”"></ts:date>
作者:JavaChen | 分类目录:JSF | 标签:
回到顶部

无觅相关文章插件,快速提升流量