【问题标题】:How to insert special characters like & and < into JSF components' value attribute?如何在 JSF 组件的 value 属性中插入 & 和 < 等特殊字符?
【发布时间】:2011-07-30 14:44:25
【问题描述】:

如何在JSF组件value属性中插入&amp;&lt;等特殊字符?

例如:我想要这样的东西:

<h:outputText value="Tom & Jerry Show" />

当我尝试这个时,我得到以下异常:

javax.faces.view.facelets.FaceletException: Error Parsing /foo.xhtml: Error Traced[line: 15] 实体名称必须紧跟在实体引用中的“&”之后。

如果是&lt;,我会得到以下异常:

javax.faces.view.facelets.FaceletException: Error Parsing /foo.xhtml: Error Traced[line: 15] 与元素类型“h:outputText”关联的属性“value”的值不能包含'

【问题讨论】:

    标签: jsf xhtml facelets


    【解决方案1】:

    您需要将它们转义到XML entities

    <h:outputText value="Tom &amp; Jerry Show" />
    

    这个问题与 JSF 本身无关,而与视图技术有关。您显然正在使用 Facelets(这非常好!)。然而,Facelets 是一种基于 XML 的视图技术,因此您需要确保模板是格式良好的 XML,并且所有要按原样表示的特殊字符都像上面一样被转义。

    wikipedia 中,您可以找到一个预定义字符实体列表,需要在您希望按原样显示它们时在 XML 中进行转义。它是以下字符实体:

    "     &quot;
    &     &amp;
    '     &apos;
    <     &lt;
    >     &gt;
    

    另见:

    【讨论】:

    • 谢谢!!!我在 rails 和遗留 jsf/j2ee 开发之间切换,这完全让我忘记了。谢谢提醒!
    • 很好的答案,像往常一样,但是如果我需要渲染一个特殊字符,比如带有重音符号的元音呢? (在我的语言中很常见!!)。通常我会这样做:&amp;aacute; 呈现á。请我如何在 JSF 中实现这一点:纯文本场景和例如h:linkvalue 属性?谢谢
    • @Scaramouche:只需在文件中输入á 并保存即可。我们已经不是 1990 年了。您可以安全地将文件保存为 UTF-8(只要您的编辑器正确配置为这样做)。默认情况下,XML 已经使用 UTF-8。只有 XML 特殊字符(例如答案中列出的五个)需要 XML 实体,其他字符不需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2019-08-24
    • 2018-01-18
    • 1970-01-01
    • 2014-11-16
    相关资源
    最近更新 更多