从MS Word文档复制粘贴文本时,文本格式会中断。但是,如果在“文本”框中键入相同的文本,则不会发生此问题。
JSF inputText标记用于接收包含最多140个字符的文本。然后在服务器端处理此文本以删除空白并插入HTML< br>当文本中的单词太大而浏览器无法包装时标记。
然后使用< li>内的outputText标记在JSF页面上显示文本。元件。
<ul>
<hx:viewFragment id="msgFragPrn" rendered="#{pc_Pagecode.enabled}">
<f:verbatim><li class="datarowPrintOnly"><span class="row"></f:verbatim>
<h:outputText value="Message"></h:outputText>
<f:verbatim></span></f:verbatim>
<h:outputText value=":" styleClass="printOnly"></h:outputText>
<h:outputText escape="false" styleClass="printInline" value="#{pc_Pagecode.transObj.formattedMsg}">
</h:outputText>
<f:verbatim> </li></f:verbatim>
</hx:viewFragment>
</ul>
使用的CSS样式
.printInline{display:inline-block; word-wrap:break-word; padding-left:2px; }
.printOnly{padding-right:4px; width:2%; vertical-align:top;}
以上代码和样式允许以下显示
在文本框中输入文字时的显示格式
在文本框中输入文字时的显示格式
由于两个文本输入之间的唯一区别可能是CR / LF /不可见字符。我尝试了以下的事情
String whitespace_chars = "" /* dummy empty string for homogeneity */
+ "\\u0009" // CHARACTER TABULATION
+ "\\u000A" // LINE FEED (LF)
+ "\\u000B" // LINE TABULATION
+ "\\u000C" // FORM FEED (FF)
+ "\\u000D" // CARRIAGE RETURN (CR)
+ "\\u0085" // NEXT LINE (NEL)
+ "\\u001C" // FILE SEPARATOR.
+ "\\u001D" // GROUP SEPARATOR.
+ "\\u001E" // RECORD SEPARATOR.
+ "\\u001F" // UNIT SEPARATOR.
+ "\\u00A0" // NO-BREAK SPACE
+ "\\u1680" // OGHAM SPACE MARK
+ "\\u180E" // MONGOLIAN VOWEL SEPARATOR
+ "\\u2000" // EN QUAD
+ "\\u2001" // EM QUAD
+ "\\u2002" // EN SPACE
+ "\\u2003" // EM SPACE
+ "\\u2004" // THREE-PER-EM SPACE
+ "\\u2005" // FOUR-PER-EM SPACE
+ "\\u2006" // SIX-PER-EM SPACE
+ "\\u2007" // FIGURE SPACE
+ "\\u2008" // PUNCTUATION SPACE
+ "\\u2009" // THIN SPACE
+ "\\u200A" // HAIR SPACE
+ "\\u2028" // LINE SEPARATOR
+ "\\u2029" // PARAGRAPH SEPARATOR
+ "\\u202F" // NARROW NO-BREAK SPACE
+ "\\u205F" // MEDIUM MATHEMATICAL SPACE
+ "\\u3000" // IDEOGRAPHIC SPACE
;
使用模式&amp; Matcher和replaceAll方法用“”(空格)替换了所有上述事件。但是Matcher.find()找不到上述字符的任何出现。
然后我尝试用“”替换下面的出现。
"\\r\\n|\\r|\\n"
当文本是140个字符的连续字符串,没有空格或文本由长度超过50个字符的单词组成时,也会观察到上述问题。在这种情况下,我使用[\ s +]作为分隔符对文本进行标记,并插入&lt; br /&gt;。在插入break标签后的两种情况下,显示格式都是预期的。
我仍然想知道在复制粘贴文本时打破显示格式的原因是什么。有什么指示吗?
答案 0 :(得分:0)
唯一可行的是插入&lt; br /&gt;当文本内容大于特定长度时,在文本中标记。