h:outputText似乎修剪了空白,我该如何保留空白?

时间:2012-04-13 14:21:56

标签: jsf whitespace

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

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

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

我相信它是关于html渲染的。我该怎么办?写一个HTML编码器?怎么样?帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:14)

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

也许你在讨论值中的前导/尾随空格,制表符,换行符,回车符等空格,默认情况下HTML标记中没有任何含义。它只是HTML源代码的一部分,而不是HTML表示。例如,换行符在HTML中由<br>元素表示,而不是由\n字符表示。

如果您想要保留HTML元素节点中的空格,就像在HTML源代码中那样,那么您需要将父HTML元素的CSS white-space属性设置为pre保护它。如果您想在块元素中换行,请使用pre-wrap

E.g。

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

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

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

另见: