h:对于字符串中的长字,outputText换行符

时间:2010-12-29 19:02:58

标签: string jsf jsf-2 primefaces

有没有办法告诉h:outputText JSF(2.0)在字符串中插入一个换行符(甚至更好:像“ - ”这样的自定义字符串)? 我的问题是,当我在一个没有空格的字符串中有一个很长的单词时,我的数据表(PrimeFaces)会变得太宽。当我有一个长文本“普通”单词时,它会工作,然后下一行打印下一个单词。

虽然我可以使用转换器,但这仍然意味着我必须在字符串中查找长字,然后在每次显示文本时剪切它们。这对于少量数据会以某种方式工作,但是当数据库变得越来越大时它需要很多处理能力(并且它会)。

我还可以在插入数据库之前扫描字符串中的长字,这意味着我只需要处理字符串一次,但是如果我曾经有过这样的话我也无法完全重建原始字符串需要它。

有人对此有任何意见吗?

提前感谢您和最诚挚的问候, 罗伯特

6 个答案:

答案 0 :(得分:18)

将相关元素的CSS word-wrap属性设置为break-word

<h:outputText styleClass="someClass" />

.someClass {
    word-wrap: break-word;
}

答案 1 :(得分:11)

 <h:outputText value="Very Wordy&lt;br /&gt;Table Column&lt;br /&gt;Heading" escape="false" />  

<强>输出

Very Wordy
Table Column
Heading

答案 2 :(得分:4)

这可以通过两个步骤完成

1)将样式应用为表格布局:固定到panelGrid

E.g: <h:panelGrid style="table-layout:fixed;">

2)然后将自动换行符的样式应用于<h:outputText />,如下所示。

E.g: <h:outputText style="word-wrap:break-word;">

希望这有帮助。

答案 3 :(得分:2)

如果你在String中有很长的单词,你可以像这样使用word-break: break-all;

<h:outputText value="111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" style="word-break: break-all;"/>

但它需要CSS3。 链接:word-break

答案 4 :(得分:0)

你可以使用h:inputTextarea而不是h:outputText,不记得设置readonly属性为true并删除这样的边框:

<h:inputTextarea  rows="10" cols="50" readonly="true" value="multiline String"  style="border-color: white"  />

答案 5 :(得分:-1)

接受的答案对我不起作用。使用“空白:正常”修复它。

<h:outputText value="long text" style="white-space: normal"/>