JSF error on Glassfish: PWC6228: #{…} not allowed in a template text body

If you forget to include the JSF taglibs in a JSP that’s part of a JSF app, you’ll get this rather obscure error on Glashfish 3.1.1:

WARNING: StandardWrapperValve[faces]: PWC1406: Servlet.service() for
servlet faces threw exception org.apache.jasper.JasperException:
/configure.jsp(13,34) PWC6228: #{...} not allowed in a template
text body.


Add the taglibs to fix:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

I’ve subsequently realized in following some JSF tutorials that apparently there’s substantial difference between JSF 1.2 and 2.0, and that the errors I was running into were because I wrongly assumed JSF2.0 used JSP pages (it used XHTML Facelets instead), and so most of the issues I was running into were as a result of trying to do things the wrong way for 2.0.