Переменная не интерпретируется в шаблоне play2
-
02-01-2020 - |
Вопрос
У меня проблема с шаблонизатором Play2.Некоторые переменные не интерпретируются в процессе рендеринга.
Переменная {key.getKey} не интерпретируется, если она заключена в двойные кавычки.Как я могу решить эту проблему?
ШАБЛОН PLAY 2.2.3 (index.scala.html)
@flash
@(if (flash.size > 0) {
flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius {key.getKey}" data-alert="">
{key.getKey.toUpperCase} — {key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
})
ВЫВОД HTML:
{"success": "The item has been created"}
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius {key.getKey}" data-alert="">
SUCCESS — The item has been created
<a href="#" class="close">×</a>
</div>
</div>
</div>
ШАБЛОН PLAY 2.2.3 (index.scala.html) с переменной @
@flash
@(if (flash.size > 0) {
flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
{key.getKey.toUpperCase} — {key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
})
ВЫВОД HTML:
{"success": "The item has been created"}
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
SUCCESS — The item has been created
<a href="#" class="close">×</a>
</div>
</div>
</div>
Решение
РЕДАКТИРОВАТЬ: Поскольку ранее было неясно, Scala это или Java, я изменил свой ответ для работы с Play Java.
Похоже, что шаблоны в Java работают немного по-другому, и скобки вокруг if
заявление все испортило.Вам действительно не нужно if
в любом случае, поскольку отображение пустого итератора ничего не даст.Это работает:
@flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
@{key.getKey.toUpperCase} — @{key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
И если вы действительно хотите if
:
@if(flash.size > 0) {
(above code)
}
Не связан с StackOverflow