Facelets is XML based and processed by a XML parser. The —
is a HTML entity and not recognized in XML. Only the five listed in this Wikipedia page, "
, &
, '
, <
and >
, are recognized in XML.
Facelets/XML uses by default already UTF-8, and HTML entities are basically a leftover of pre-UTF-8 era and not necessary in UTF-8 documents, so you could just put the actual character plain/unencoded in the template (provided that the editor is able to save the file as UTF-8).
In other words, simply adjust
<h:link value="#{somethingHere} — #{anotherHere}">
to
<h:link value="#{somethingHere} — #{anotherHere}">
If this isn't an option for some reason, then you could instead use a numeric character reference in the format &#nnnn;
, like as one would use  
to represent a
in XML. You can find the numeric character reference in fileformat.info: Unicode Character 'EM DASH' (U+2014)
Encodings
HTML Entity (decimal) —
So, this should do for you:
<h:link value="#{somethingHere} — #{anotherHere}">
An alternative, which should satisfy the exact error message more, is to declare the entity reference explicitly yourself in the doctype.
<!DOCTYPE html [
<!ENTITY mdash "—">
]>
But this isn't the general recommendation/approach as you'd need to repeat this over every single XML file wherein the character is been used.