Facelets 基于 XML 并由 XML 解析器处理。这—
是 HTML 实体,在 XML 中无法识别。仅列出了五个这个维基百科页面 http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML, "
, &
, '
, <
and >
,在 XML 中被识别。
Facelets/XML 默认情况下已经使用 UTF-8,而 HTML 实体基本上是 UTF-8 之前时代的遗留物,在 UTF-8 文档中不是必需的,因此您可以将实际字符以纯文本/未编码的形式放入模板中(前提是编辑器能够将文件保存为 UTF-8)。
换句话说,只需调整
<h:link value="#{somethingHere} — #{anotherHere}">
to
<h:link value="#{somethingHere} — #{anotherHere}">
如果由于某种原因这不是一个选项,那么您可以使用以下格式的数字字符引用&#nnnn;
,就像人们会使用的那样 
代表一个
在 XML 中。您可以在 fileformat.info 中找到数字字符参考:Unicode字符集 'EM DASH' (U+2014) http://www.fileformat.info/info/unicode/char/2014/index.htm
编码
HTML 实体(十进制)—
所以,这应该适合你:
<h:link value="#{somethingHere} — #{anotherHere}">
另一种方法应该更能满足确切的错误消息,即在文档类型中自己显式声明实体引用。
<!DOCTYPE html [
<!ENTITY mdash "—">
]>
但这不是一般建议/方法,因为您需要对使用该字符的每个 XML 文件重复此操作。