2

我有一个动态查询数据库以在页面上显示数据的网页,类似于 Toad 等数据库工具(当然甚至不关闭:),示例仅用于说明)。

问题是数据在页面上显示时会被修剪。这就是我使用 JSF 显示数据的方式

<h:outputText value="#{record[columnIndex].toDisplayString()}" />

我相信这是关于 html 渲染的。我该怎么办?写一个html编码器?如何?帮助将不胜感激。

4

1 回答 1

15

<h:outputText>根本不会削减价值。

也许您正在谈论值中的前导/尾随空格、制表符、换行符、回车符等空格,默认情况下,这些空格在 HTML 标记中完全没有意义。它只是成为 HTML 源代码的一部分,而不是 HTML 表示。例如,换行符在 HTML 中由<br>元素表示,而不是由\n字符表示。

如果您想在 HTML 元素节点中保留 HTML 源代码中的空白,那么您需要将父 HTML 元素的 CSSwhite-space属性设置pre为以保留它。如果您想在块元素中换行,请使用pre-wrap.

例如

<h:outputText ... styleClass="preformatted" />

.preformatted {
    white-space: pre-wrap;
}

另一种方法是自己将文本转换为有效的 HTML 标记。例如用字符串替换每个出现的\n字符<br/>。您可以为此使用 EL 函数。

也可以看看:

于 2012-04-13T14:43:56.990 回答