Шаблоны скорости - новая линия

Я работал с движком Apache Velocity и настраиваемым шаблоном.
Дело в том, что я не смог создать строку с соответствующими разрывами строк. Я попробовал почти все, что нашел, например, используя $esc.n и $esc.newline(у меня уже есть инструменты для запуска в моем проекте), но похоже, что используемая мной версия не поддерживает его (1.4), проверили, будет ли работать "\n", "\\n" и даже "\\\n", но одно и то же.

Есть ли у кого-нибудь решение?

Ответ 1

У нас были проблемы с новыми строками и в результате было добавлено свойство VelocityContext:

VelocityContext ctx = new VelocityContext();
ctx.put("newline", "\n");

Затем везде, где нам нужно было использовать новую строку, мы ссылались бы на контекстную переменную:

$newline

Мы используем это в случаях, когда нам нужно заменить строки новой строки в строке с < br/ > .

Ответ 2

Используете ли вы Velocity для создания HTML-контента? В этом случае помните, что вам нужно использовать <br> не новую строку.

Если вам действительно нужен новый символ линии, вы просто поместите фактический новый символ линии, т.е. нажмите enter. Не существует escape-последовательностей, таких как \n в Velocity.

Ответ 3

Если вы используете Velocity 1.5 или новее, вы также можете просто добавить новую строку:

#set( $foo = "this has a 
line break" ) 

Ответ 4

Мне нужна новая строка для генерации javascript. Ну, я, конечно, не нуждался в этом, но при разработке он упростил чтение сгенерированного кода. В этом случае я просто установил переменную, чтобы скорость была легче читать. Это все, что вам нужно:

Код скорости:

#set( $newline="
")
#set( $jsCode = "var bling='blang';{$newline}var bark='bite';{$newline}" )
<script>
$jsCode</script>

Результат:

<script>
var bling='blang';
var bark='bite';
</script>