处理primefaces textarea提交值的换行符

时间:2011-09-23 11:04:07

标签: java jsf-2 textarea primefaces line-breaks

我有一个主要的textarea。用户只需在其中输入多行并提交表单即可。在我的支持bean中,值在换行符处被拆分。每行都经过验证。从字符串中删除有效行,并保留无效行,并再次发送给用户。

拆分代码:

StringTokenizer tokens=new StringTokenizer(value,"\n\r");

使用无效行重新填充值:

valueStrBldr.append(invalidLine).append("\n\r");

问题是当值重新加载到文本区域时,它会有很多不需要的换行符和空行。是否必须对平台相关的换行符做些什么?

当我删除\ r时,问题解决了,但是这个值没有正确分割 - 我的意思是为什么不一致?

2 个答案:

答案 0 :(得分:2)

我建议使用BufferedReader#readLine()来读取换行符。这涵盖了所有可能的平台特定换行符,例如\r\n\r\n,您无需担心(请注意\n\r 有效的换行符序列。)

BufferedReader reader = new BufferedReader(new StringReader(value));
String line = null;

while ((line = reader.readLine()) != null) {
    // ...
}

写行时,我建议使用\r\n。它应该适用于所有客户端(webbrowsers)。

valueStrBldr.append(invalidLine).append("\r\n");

答案 1 :(得分:1)

我认为它应该是'\ r \ n'(逆序)。如果我没记错,\ r是一行的结尾,\ n是一个新行。

无论如何,尝试只打印出输入的ascii代码,并查看它。尝试识别模式。这种蛮力,但你会发现在3-4行之后你就会知道发生了什么。