Java 处理primefaces textarea提交值中的换行符
我有一个特别的地方。用户只需在其中输入多行并提交表单。在我的支持bean中,值在换行符处拆分。每一行都经过验证。从字符串中删除有效行,保留无效行,然后再次发送给用户 拆分代码:Java 处理primefaces textarea提交值中的换行符,java,jsf-2,textarea,primefaces,line-breaks,Java,Jsf 2,Textarea,Primefaces,Line Breaks,我有一个特别的地方。用户只需在其中输入多行并提交表单。在我的支持bean中,值在换行符处拆分。每一行都经过验证。从字符串中删除有效行,保留无效行,然后再次发送给用户 拆分代码: StringTokenizer tokens=new StringTokenizer(value,"\n\r"); 用无效行重新填充值: valueStrBldr.append(invalidLine).append("\n\r"); 问题是,当值重新加载到文本区域时,它会有很多不需要的换行符和空行。它是否必须与平台
StringTokenizer tokens=new StringTokenizer(value,"\n\r");
用无效行重新填充值:
valueStrBldr.append(invalidLine).append("\n\r");
问题是,当值重新加载到文本区域时,它会有很多不需要的换行符和空行。它是否必须与平台相关的换行符有关
当我删除\r时,问题就解决了,但是值没有正确分割——我的意思是为什么不一致?我认为应该是'\r\n'(颠倒顺序)。如果我没记错的话,\r是一行的结尾,\n是新行
无论如何,试着打印出输入的ascii码,然后查看它。尝试识别模式。这听起来像蛮力,但你会看到,在3-4行之后,你对正在发生的事情有了一个想法。我认为应该是'\r\n'(颠倒顺序)。如果我没记错的话,\r是一行的结尾,\n是新行 无论如何,试着打印出输入的ascii码,然后查看它。尝试识别模式。这听起来很暴力,但你会发现在3-4行之后,你对正在发生的事情有了一个想法。我建议用它来代替换行符上的行。这涵盖了所有可能的平台特定换行符,如
\r\n
、\r
和\n
,而无需担心(请注意\n\r
不是有效的换行符序列)
写行时,我建议使用\r\n
。它应该在所有客户端(WebBrowser)中都能正常工作
我建议改为使用换行符来阅读换行符上的行。这涵盖了所有可能的平台特定换行符,如\r\n
、\r
和\n
,而无需担心(请注意\n\r
不是有效的换行符序列)
写行时,我建议使用\r\n
。它应该在所有客户端(WebBrowser)中都能正常工作
BufferedReader reader = new BufferedReader(new StringReader(value));
String line = null;
while ((line = reader.readLine()) != null) {
// ...
}
valueStrBldr.append(invalidLine).append("\r\n");