Подтвердить что ты не робот

Как передать raw html в Play Framework?

Я пытаюсь передать простой URL-адрес в представление в приложении платформы воспроизведения, однако при передаче в виде строки & в URL-адресе изменяется на &, из-за чего URL-адрес не работает.

Если я изменил аргумент на Html, то есть @(url: Srting) - @(url: Html), тогда я получаю сообщение об ошибке при попытке передать url как строку методу view.render().

Как я могу преобразовать url в Html и передать его как это?

4b9b3361

Ответ 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"))