【问题标题】:How to inject a JS script in Qute Template Engine如何在 Qute 模板引擎中注入 JS 脚本
【发布时间】:2021-12-19 13:09:14
【问题描述】:

我将Quarkusqute 模板引擎一起使用。我需要注入一些动态的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(&#39;test redirect by script&#39;)
    </script>
    </body>
</html>

如何将脚本数据传递给qute 模板文件?

【问题讨论】:

    标签: quarkus quarkus-qute


    【解决方案1】:

    你会想要关闭Character Escapes:

    要么使用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());
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多