Apache Velocity: замена новой строки не работает - PullRequest
0 голосов
/ 05 июля 2018

В моем веб-приложении Java / Spring я использую Velocity Template (1.7) для "создания" почтового сообщения HTML.

Когда я передаю пользовательский объект в шаблон .vm, я не могу заменить символы "\ n" (перевод строки), присутствующие в html-прерывании <br />

Я имею в виду:

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

не работает, но если я заменяю другой случайный символ, отличный от "\ n", тогда он работает.

Я пытался с двойным побегом $myobject.description.replace("\\n","<br/>"), но безуспешно.

Если та же строка кода

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

выполняется в моем сервисе Bean. Это работает, и каждая новая строка корректно заменяется html break.

Можете ли вы сказать, что это не так?

Заранее спасибо.

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете использовать replaceAll с новой строкой, как предложено в Скорость архивного ответа :

Начиная с Velocity 1.5 (и его бета-версий), VTL допускает разрывы строк в строковых литеральных определениях. Это означает, что вы бы поставили символ новой строки в строке, набрав этот фактический символ, вместо использования escape-последовательности Java (\ n). Итак, вы хотели бы сделать что-то вроде этого:

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

в вашем случае:

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