【问题标题】:handling line breaks in primefaces textarea submitted value处理primefaces textarea提交值中的换行符
【发布时间】:2011-11-23 14:06:53
【问题描述】:

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

拆分代码:

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

用无效行重新填充值:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    我建议使用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");
    

    【讨论】:

      【解决方案2】:

      我认为应该是 '\r\n'(倒序)。如果我没记错的话,\r 是行尾,\n 是新行。

      不管怎样,试着打印出输入的 ascii 代码,然后查看它。尝试识别模式。这听起来很粗暴,但您会发现在 3-4 行之后您就会知道发生了什么。

      【讨论】:

        猜你喜欢
        • 2011-09-13
        • 2014-11-01
        • 2013-08-18
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 2012-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多