Apache Velocity:替换换行符不起作用

时间:2018-07-05 12:24:08

标签: java spring newline velocity

在Java / Spring Web应用程序中,我正在使用Velocity Template(1.7)来“构建” HTML邮件。

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

我的意思是:

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

不起作用,但是如果我替换另一个不同于“ \ n”的随机字符,则它起作用。

我尝试了两次转义$myobject.description.replace("\\n","<br/>"),但没有成功。

如果同一行代码

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

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

你能说出什么问题吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以按照velocity archive answer中的建议在新行中使用replaceAll:

  

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

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

在您的情况下:

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