【发布时间】: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