h:outputText 似乎修剪了空格,如何保留空格?[复制]

h:outputText seems to trim whitespace, how do I preserve whitespace? [duplicate]

提问人:Bren 提问时间:4/13/2012 最后编辑:Bren 更新时间:9/30/2015 访问量:6598

问:

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

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

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

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

JSF 空白

评论

0赞 d1e 4/13/2012
我相信修剪数据在所有情况下都是可以的。我认为间距和对齐应该使用 html 来完成。

答:

16赞 BalusC 4/13/2012 #1

根本不会修剪值。<h:outputText>

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

如果要保留 HTML 元素节点中的空格,就像在 HTML 源代码中一样,则需要将父 HTML 元素的 CSS white-space 属性设置为 以保留它。如果要在块元素中换行,请使用 .prepre-wrap

例如

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

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

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

另请参阅:

评论

0赞 Bren 4/14/2012
非常感谢,我知道这与html有关,正在寻找像trim=false之类的组件属性。想不出要查找CSS。你是救星,@BalusC先生