我有一个 primefaces 文本区域。用户只需在其中输入多行并提交表单即可。在我的支持 bean 中,值在换行符处分割。每行都经过验证。有效行将从字符串中删除,无效行将保留,然后再次发送给用户。
分割代码:
StringTokenizer tokens=new StringTokenizer(value,"\n\r");
用无效行重新填充值:
valueStrBldr.append(invalidLine).append("\n\r");
问题是,当值重新加载到文本区域时,它有很多不需要的换行符和空行。它是否必须对依赖于平台的换行符执行某些操作?
当我删除\r 时,问题解决了,但是值没有正确分割 - 我的意思是为什么不一致?
最佳答案
我建议使用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
。它应该在所有客户端(网络浏览器)中都能正常工作。
valueStrBldr.append(invalidLine).append("\r\n");
关于java - 处理 primefaces 文本区域提交值中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528001/