java - 处理 primefaces 文本区域提交值中的换行符

标签 java jsf-2 textarea primefaces line-breaks

我有一个 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/

相关文章:

java - Java如何将windows放到桌面上?

java - jdbcTemplate 中的 ResultSetExtractor 抛出编译错误

java - 我的第一个 Android 应用无法在我的 Android 设备(手机)中正常运行

css - 如何使我的加载图像在我的页面上居中?

jsf - 如何覆盖默认文件上传 h :message in ICEfaces

javascript - 在自动调整文本区域中键入时如何停止窗口跳转

jQuery 从文本区域转义 HTML

java - 不在 Logger 控制台中打印日志

jsf-2 - 将支持 bean 作为参数传递给 Facelet 包括

java - 从文本区域复制的文本在另一个文本编辑器中显示在一行上