gpt4 book ai didi

jsf-2 - 如何在JSF的EL中使用HTML字符实体?

转载 作者:行者123 更新时间:2023-12-04 14:16:09 25 4
gpt4 key购买 nike

我想在h:link组件的value属性中使用em dash

这是我的尝试(当前无法正常工作):

<h:link value="#{somethingHere} &mdash; #{anotherHere}">
<f:param name="identifier" value="#{somethingHere.identifier}" />
</h:link>

结果为 FaceletsException:
FaceletException: Error Parsing /index.xhtml: Error Traced[line: 13]
The entity "mdash" was referenced, but not declared.
at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:394)
...

我知道我可以改用HTML anchor ,但是有没有办法在 Expression Language(EL)表达式中使用它呢?正确的方法是什么?

最佳答案

Facelets是基于XML的,并由XML解析器处理。 &mdash;是HTML实体,无法用XML识别。 XML中仅识别this Wikipedia page&quot;&amp;&apos;&lt;&gt;中列出的五个。
Facelets/XML默认情况下已经使用UTF-8,HTML实体基本上是UTF-8之前时代的遗留物,在UTF-8文档中没有必要,因此您可以将实际字符简单/未编码地放在模板中(提供编辑器可以将文件另存为UTF-8)。
换句话说,只需调整

<h:link value="#{somethingHere} &mdash; #{anotherHere}">
<h:link value="#{somethingHere} — #{anotherHere}">
如果由于某种原因这不是一个选择,那么您可以改用 &#nnnn;格式的数字字符引用,就像使用 &#160;表示XML中的 &nbsp;一样。您可以在fileformat.info中找到数字字符引用: Unicode Character 'EM DASH' (U+2014)

Encodings

HTML Entity (decimal) &#8212;


因此,这应该为您做:
<h:link value="#{somethingHere} &#8212; #{anotherHere}">
一种替代方法,应进一步满足确切的错误消息,该方法是在doctype中自己明确声明实体引用。
<!DOCTYPE html [
<!ENTITY mdash "&#8212;">
]>
但这不是一般的建议/方法,因为您需要在每个使用该字符的XML文件中重复此操作。

关于jsf-2 - 如何在JSF的EL中使用HTML字符实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11992707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com