Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String h:输出字符串中长单词的换行符_String_Jsf_Jsf 2_Primefaces - Fatal编程技术网

String h:输出字符串中长单词的换行符

String h:输出字符串中长单词的换行符,string,jsf,jsf-2,primefaces,String,Jsf,Jsf 2,Primefaces,有没有办法告诉JSF(2.0)的h:outputText在字符串中的很长单词中插入换行符(或者更好:像“-”这样的自定义字符串)? 我的问题是,当我在一个没有空格的字符串中有一个很长的单词时,我的数据表(PrimeFaces)变得太宽了。当我有一个长文本“正常”字,然后下一个字被打印在下一行时,它就起作用了 虽然我可以使用转换器,但这仍然意味着我必须在字符串中查找长单词,然后在每次显示文本时剪切它们。这在某种程度上对少量数据有效,但当数据库变得越来越大时,需要大量的处理能力(而且会) 我还可以在

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

虽然我可以使用转换器,但这仍然意味着我必须在字符串中查找长单词,然后在每次显示文本时剪切它们。这在某种程度上对少量数据有效,但当数据库变得越来越大时,需要大量的处理能力(而且会)

我还可以在插入数据库之前扫描字符串中的长单词,这意味着我只需要处理字符串一次,而且如果需要的话,我无法完全重建原始字符串

有人对此有什么意见吗

提前向您表示感谢并致以最良好的问候, Robert

将相关元素的CSS属性设置为
断开单词

<h:outputText styleClass="someClass" />

这可以通过两个步骤来完成

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

例如:

2) 然后对
应用单词换行符的样式,如下所示

例如:


希望这有帮助。

您可以使用h:inputTextarea而不是h:outputText,不要记得将readonly属性设置为true并删除边框,如下所示:

<h:inputTextarea  rows="10" cols="50" readonly="true" value="multiline String"  style="border-color: white"  />
<h:outputText value="111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" style="word-break: break-all;"/>

如果字符串中有很长的单词,可以使用
分词:全部分词如下所示:

<h:inputTextarea  rows="10" cols="50" readonly="true" value="multiline String"  style="border-color: white"  />
<h:outputText value="111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" style="word-break: break-all;"/>

但它需要CSS3。
链接:

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

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


这对我不起作用。css类显示在firebug中匹配的css规则中,但我不知道为什么长单词不会中断。@djaqeel:一个先决条件是元素具有固定的宽度。哦,谢谢。你是对的。当我给出固定宽度时,它工作得很好,但我想给出%widt。在%age-width中,单词换行是可以的,但是跨度本身占据了整个宽度(好像在应用单词换行之前它计算了跨度的宽度)。@Robert M.嗨,我也有同样的问题。Balus C answer对我不起作用,但我使用的是jsf1.2。如果你展示你的代码,那么它对我会很有用。Balus C的解决方案不依赖于使用的JSF版本。这是一个简单的CSS解决方案。styleClass属性存在于JSF 1.2中,并将“class”属性呈现给结果HTML输出。如果它不起作用,这是HTML/CSS中的一个问题。您可以尝试为父HTML元素设置一个固定的宽度。来源:请不要只发布代码作为答案,还要解释代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,更容易吸引选票
<h:outputText value="long text" style="white-space: normal"/>