Any non-HTML tags - custom
JSP, JSTL,
JSF, Facelets, whatever would not be processed, just passed on verbatimh as part of the HTML and the browser would typically ignore them, since that's the standard for tags that a browser doesn't understand.
To process custom tags, you'd need to set up the proper processing environment for the type of tag you wanted to process. The easiest way to do that would be to construct a separate internal page request, then present the HTML that came back from that request.
For the most part, that's too much trouble and delay. In the case of custom JSF/facelet stuff, it's easier and simpler just to construct the underlying objects and insert them into the JSF document tree.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.