【问题标题】:Apache Velocity: replace newline does not workApache Velocity:替换换行符不起作用
【发布时间】:2018-07-05 21:12:35
【问题描述】:

在我的 Java/Spring Web 应用程序中,我使用 Velocity 模板 (1.7) 来“构建” HTML 邮件消息。

当我将自定义对象传递给 .vm 模板时,我无法用 html 中断 <br /> 替换“\n”(换行符)字符

我的意思是:

<p>$myobject.description.replace("\n","<br/>")</p>

不起作用,但如果我替换另一个与“\n”不同的随机字符,那么它会起作用。

我尝试使用双重转义 $myobject.description.replace("\\n","&lt;br/&gt;") 没有任何成功。

如果同一行代码

myobject.description.replace("\n","<br/>");

在我的服务 Bean 中执行它可以正常工作,并且每个换行符都正确替换为 html break。

你能说出哪里不对吗?

提前致谢。

【问题讨论】:

  • 我的回答有帮助吗?

标签: java spring newline velocity


【解决方案1】:

您可以按照velocity archive answer 中的建议将 replaceAll 与新行一起使用:

从 Velocity 1.5(及其测试版)开始,VTL 允许换行 在字符串文字定义中。这意味着您将放置一个 通过键入该实际字符将换行符添加到字符串中, 而不是使用 Java 转义序列 (\n)。所以,你会想要 做这样的事情:

#set( $new = "
" )
$foo.replaceAll( "$new", "$new * " )

在你的情况下:

 #set( $new = "
 " )
<p>$myobject.description.replaceAll( "$new","<br/>")</p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2016-09-24
    • 2017-07-10
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多