【问题标题】:Show multiline text in grails page在 grails 页面中显示多行文本
【发布时间】:2014-07-10 22:51:18
【问题描述】:

我对此很生气,我需要显示从 grails 2.3.7 中的 textarea 获得的文本,但是当我替换 br/ 的 \r\n 字符并执行 encodeAsHTML() 时,我得到了 br 的每一个where 而不是新行。

它是如何完成的?这是我尝试过的:

${cotizacionInstance.descripcion.encodeAsHTML().replaceAll('\r\n', '<br/>')}

${cotizacionInstance.descripcion.replaceAll('\r\n', '<br/>').encodeAsHTML()}

<%=cotizacionInstance.descripcion.replaceAll('\r\n', '<br/>').encodeAsHTML()%>

<%=cotizacionInstance.descripcion.encodeAsHTML().replaceAll('\r\n', '<br/>')%>

<%=cotizacionInstance.descripcion.replaceAll('\r\n', '<br/>').decodeHTML()%>

<%=cotizacionInstance.descripcion.decodeHTML().replaceAll('\r\n', '<br/>')%>

如果我使用 pre 标记,我不喜欢它的显示方式,因为我失去了所有响应能力。

我在 google chrome 检查器中看到我的字符串位于双引号之间,但我不知道如何删除它们。

谢谢

【问题讨论】:

    标签: string grails newline gsp


    【解决方案1】:

    您的描述中遗漏了一些因素,因此无法确定,但获得您所追求的行为的一种方法是使用类似这样的东西将文本标记为原始...

    ${raw(cotizacionInstance.descripcion.replaceAll('\r\n', '<br/>'))}
    

    希望对你有帮助。

    【讨论】:

    • 确保您了解所有这些是如何工作的。如果cotizacionInstance.descripcion 的值可能包含恶意标记并且您将其标记为原始值,则该值中的任何内容都将被呈现为未转义。根据您的应用程序,这可能没问题,但需要谨慎。
    • 这是我需要的谢谢!,我将在替换之前使用 encodeAsHTML,这样恶意标记就不会伤害我 ;)
    • 只是为了后代:正确的解决方案如下所示:${raw(cotizacionInstance.descripcion.encodeAsHTML()).replaceAll("\\n", "&lt;br/&gt;"}
    【解决方案2】:

    您需要转义反斜杠:

    replaceAll("\\n", "<br/>")
    

    【讨论】:

    • replaceAll 工作的问题是我看到
      而不是换行
    • 只有当她试图用 n 替换文字反斜杠时才有意义。我不认为这是她想要做的。我认为她正在尝试替换换行符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2012-11-20
    相关资源
    最近更新 更多