I am using JSF 2.0. I created custom JSTL tags with tagfiles and that were working fine in JSP. But I want to use custom JSTL tags in Facelets too. Is it possible to create tagfiles in Facelets or not?
I created custom JSTL tags with tagfiles and that were working fine in JSP.
The phrase "custom JSTL tags" makes no sense. JSTL is already a taglib at its own. Read the introductory paragraphs of our JSTL wiki page to learn what JSTL really is. You perhaps actually meant "custom JSP tags". Of course they would not work in Facelets as that's a completely different view technology than JSP and actually the successor of the deprecated JSP. See also Why Facelets is preferred over JSP as the view definition language from JSF2.0 onwards?
But I want to use custom JSTL tags in Facelets too
The analogy of a "custom JSP tag" in Facelets is a "custom Facelets tag", or more commonly "Facelets tag file". It's rather simple, you can follow the same syntax as an include file.
/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>
and register it in /WEB-INF/example.taglib.xml
as follows:
<?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>
which is in turn registered in /WEB-INF/web.xml
as follows:
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/example.taglib.xml</param-value>
</context-param>
(note that registration in web.xml
is unnecessary when the *.taglib.xml
file is in /META-INF
folder of a JAR in /WEB-INF/lib
)
and finally use it in your templates as follows:
<html ... xmlns:my="http://example.com/jsf/facelets">
...
<my:some />
See also:
© 2022 - 2024 — McMap. All rights reserved.