Facelets has cloned a limited set of "good old" JSTL tags and is included in the Facelets library. All of them are described here . In other words: not all JSTL tags / features are supported in Facelets.
If there is any original JSTL tag that you would like to use, but was not available to Facelets, then you will go to another corner to solve. The work that can be done by JSTL sql and xml taglibs does not belong to the view, but rather to the model / business logic. The JSTL fmt taglib is already covered by the JSF tags <f:loadBundle> and <f:formatXXX> . JSTL taglib functions can be just as well implemented with custom EL functions. I posted an example in this answer .
The problem with JSF and the JSTL source library is that they do not sync, as you would expect from coding. This is all the more so since JSTL first starts the page from top to bottom, and then passes the generated output to JSF for further processing. This may lead to unexpected results when using, for example, <c:forEach> .
See also:
source share