如何创建自定义Facelets标记?(How to create a custom Facelets

2019-07-19 13:32发布

我使用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?