【问题标题】:How do I convert data in text fields into formatted html?如何将文本字段中的数据转换为格式化的 html?
【发布时间】:2012-05-09 07:42:02
【问题描述】:

我有一个包含以下内容的数据库列:

    <p><span style="color: #ff0000"><strong>$9,500,000.00</strong></span></p>
    <p>$11,000,000.00</p>

在 JSF 1.2 和 Icefaces 1.8.2 中,该数据可以正常输出。在 JSF 2.1 和 Icefaces 3.0 下,我得到了你所看到的 - 只是纯文本。

这是一段 sn-p 代码,值在金额字段中:

        <ice:column>
            <f:facet name="header">
                <ice:outputText value="Amount"/>
            </f:facet>
            <ice:outputText value="#{offDoc.amount}"/>
        </ice:column>

我尝试用标签包裹 ice:outputText 标签,但没有成功。有什么想法吗?

【问题讨论】:

  • 我在您的第一个输出中没有看到“纯文本”。我看到了样式化的文本。不清楚是什么问题。
  • 我在数据库中的列包含的数量包括如上所示的 html 标签信息。我今天在生产中得到的是实际格式 - 9,500,000 美元,带有粗体和彩色文本。我现在看到的只是未格式化的 html 值。我不知道还有什么可以让它使用样式进行转换。
  • 你是说 IceFaces 是在转义你的 HTML 而不是解释它?
  • 没错。出于某种原因,转到 JSF 2.1 和 Icefaces 3 导致转义它而不是解释它。
  • JSF 确实隐式转义 HTML 以防止 XSS 攻击漏洞。请注意,特定数据不受外部用户控制。毕竟,将标记存储在数据库中是一种非常糟糕的做法,除非用户控制......应该将其列入白名单。另见stackoverflow.com/questions/7722159/…

标签: jsf jsf-2 icefaces-3


【解决方案1】:

你需要这样的东西来关闭 HTML 转义:

<ice:outputText value="#{offDoc.amount}" escape="false"/>

请看这里:http://res.icesoft.org/docs/latest/tld/ice/outputText.html

如果“escape”属性不存在,或者它存在并且它的 值为 "true" 所有尖括号都应转换为 呈现“值”的值时的 & xx 分号语法 属性作为组件的值。如果“escape”属性是 存在并且是“假”的组件的值应该被呈现 作为没有转义的文本。

【讨论】:

  • 这就是我需要的答案。我真的需要使用 6.5.1 和 Windows 7 64 位备份 Netbeans。这些天使用记事本很糟糕:-) 我错过了组件套件文档中的转义。
猜你喜欢
  • 2012-09-05
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 2021-09-25
相关资源
最近更新 更多