有没有办法告诉h:outputText
JSF(2.0)在字符串中插入一个换行符(甚至更好:像“ - ”这样的自定义字符串)?
我的问题是,当我在一个没有空格的字符串中有一个很长的单词时,我的数据表(PrimeFaces)会变得太宽。当我有一个长文本“普通”单词时,它会工作,然后下一行打印下一个单词。
虽然我可以使用转换器,但这仍然意味着我必须在字符串中查找长字,然后在每次显示文本时剪切它们。这对于少量数据会以某种方式工作,但是当数据库变得越来越大时它需要很多处理能力(并且它会)。
我还可以在插入数据库之前扫描字符串中的长字,这意味着我只需要处理字符串一次,但是如果我曾经有过这样的话我也无法完全重建原始字符串需要它。
有人对此有任何意见吗?
提前感谢您和最诚挚的问候, 罗伯特
答案 0 :(得分:18)
将相关元素的CSS word-wrap
属性设置为break-word
。
<h:outputText styleClass="someClass" />
与
.someClass {
word-wrap: break-word;
}
答案 1 :(得分:11)
<h:outputText value="Very Wordy<br />Table Column<br />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"/>