我使用JSF 2.0。 我创建的自定义JSTL标签与标签文件,并且是在JSP做工精细。 但我想使用Facelets的定制JSTL标签了。 是否有可能创建的Facelets标记文件或不?
Answer 1:
“自定义JSTL标记”诚实是没有意义的。 这个术语是毫无意义的。 JSTL 已经在自己的标签库。 请仔细阅读的引言段我们JSTL维基页面 ,以了解JSTL真的是。 您也许实际上意味着“ 定制JSP标记 ”。 当然,因为这是一个完全不同的视图技术比JSP,实际上已过时的JSP的继任者,他们不会在Facelets的工作。
那么,“自定义JSP标签”的比喻是“自定义Facelets标记”,或者更常见的“Facelets标记文件”。 这是相当简单的,你可以按照相同的语法,一个包含文件。
/WEB-INF/tags/some.xhtml
:
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets">
Hello World
...
<ui:insert /> <!-- This inserts tag body, if necessary. -->
</ui:composition>
和在注册它/WEB-INF/example.taglib.xml
如下:
<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
version="2.0">
<namespace>http://example.com/jsf/facelets</namespace>
<tag>
<tag-name>some</tag-name>
<source>tags/some.xhtml</source>
</tag>
</facelet-taglib>
其又在注册/WEB-INF/web.xml
如下:
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/example.taglib.xml</param-value>
</context-param>
(注意在该注册web.xml
是不必要当*.taglib.xml
文件是/META-INF
在JAR文件夹/WEB-INF/lib
)
和如下终于用它在你的模板:
<html ... xmlns:my="http://example.com/jsf/facelets">
...
<my:some />
也可以看看:
- 时使用的<ui:包括>,标记文件,复合材料部件和/或定制的组件?
- 用于共享代码的多个JSF项目结构
文章来源: How to create a custom Facelets tag?