As per the symptoms described in the comments, the <f:xxx>
and <a4j:xxx>
tags are properly processed by JSF, but the <h:xxx>
tags not. Now, let's look at their XML namespace declarations, which is where all the processing starts:
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j" >
The xmlns.jcp.org
domain as you've declared for the <h:xxx>
XML namespace is introduced since JSF 2.2. The symptom of it being unprocessed thus indicates that you aren't running JSF 2.2 at all, but an older JSF 2.x version, such as 2.0 or 2.1, which don't recognize the new XML namespace domains yet.
You've basically 2 options:
Either fix the
<h:xxx>
XML namespace accordingly to match JSF 2.0/2.1 specification:xmlns:h="http://java.sun.com/jsf/html"
Or, just upgrade to JSF 2.2.