#quarkus #quarkus-qute
Вопрос:
Я использую Quarkus
движок qute
шаблонов. Мне нужно внедрить какой-нибудь динамический js
скрипт для загрузки на HTML-страницу. Но qute
конвертировать js
так:
Файл шаблона hello.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>redirect by script</title>
</head>
<body>
<p>Hi {name}!</p>
<script>
{script}
</script>
</body>
</html>
Контроллер
@RequestScoped
public class Resource {
@Inject
@Location("hello.html")
Template hello;
@Route(path = "/s/:name", methods = HttpMethod.GET)
public Uni<String> rScript(RoutingContext rc) {
String s = "console.log('Hi from script');";
return Uni.createFrom().completionStage(() -> hello
.data("name", rc.request().getParam("name"))
.data("script", s)
.renderAsync());
}
}
Файл рендеринга шаблона, как показано ниже, и скрипт не будут запускаться в браузере:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>redirect by script</title>
</head>
<body>
<p>NOT_FOUND!</p>
<script>
console.log(amp;#39;test redirect by scriptamp;#39;)
</script>
</body>
</html>
Как я могу передать данные скрипта qute
в файл шаблона?
Ответ №1:
Вы захотите отключить экранирование символов:
Либо используйте raw
:
<script>
{script.raw}
</script>
</body>
</html>
Или вернуть RawString
:
@Route(path = "/s/:name", methods = HttpMethod.GET)
public Uni<RawString> rScript(RoutingContext rc) {
String s = "console.log('Hi from script');";
return Uni.createFrom().completionStage(() -> hello
.data("name", rc.request().getParam("name"))
.data("script", new RawString(s))
.renderAsync());
}
}