Don't use JSF to do what JSF doesn't do.
To make favicon work, all you really need is a bog-standard "favicon.ico" file in the usual WAR location.
If you prefer to use the "link" HTML tag, use the "f:verbatim" element to wrap (escape) the link HTML tag and place the wrapped link in the usual location for such tags in the View definition. In other words, in the HEAD section.
Do NOT use h:commandLink (which generates a JSF postback, not a "link" element). Do NOT write some excessively-complex JSF-specific
Java code.
Like so many things in JSF, the simplest solution is the one that works best.
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.