Как передать raw html в Play Framework?
Я пытаюсь передать простой URL-адрес в представление в приложении платформы воспроизведения, однако при передаче в виде строки &
в URL-адресе изменяется на &
, из-за чего URL-адрес не работает.
Если я изменил аргумент на Html, то есть @(url: Srting)
- @(url: Html)
, тогда я получаю сообщение об ошибке при попытке передать url как строку методу view.render()
.
Как я могу преобразовать url в Html и передать его как это?
Ответы
Ответ 1
Чтобы предотвратить экранирование по умолчанию, которое происходит для динамического содержимого в представлениях, необходимо обернуть функцию String
с помощью функции @Html(String)
:
Вид:
@(url: String)
<div class="myLink">
Go to: @Html(url) <br>
not to: @url
</div>
Контроллер:
public static Result displayLink(){
return ok(view.render("<a href='http://stackoverflow.com/'>Stack Overflow</a>"));
}
См. страницу с шаблоном в документации для получения дополнительной информации (в частности, раздел "Экранирование" в самом низу).
Ответ 2
Если вы хотите отображать HTML-контент вместо того, чтобы отображать его как сырой текст, верните содержимое .as("text/html")
. Пример:
WS.url("http://www.stackoverflow.com").get().map(resp => Ok(resp.body).as("text/html"))