代码之家  ›  专栏  ›  技术社区  ›  Taig

阻止PlayFramework的模板引擎转义我的字符串

  •  4
  • Taig  · 技术社区  · 11 年前

    我创建了一些实用程序来帮助我生成HTML,并在视图中引用它们作为 @div( "class" -> "well" ){ Hello Well. } 。到目前为止,这些类都是子类 NodeSeq 因为他们 aren't escaped 然后但我需要摆脱 节点序列 在我的类层次结构的顶部,因为Scala的xml有缺陷,使我的代码变得粗糙,而且那时我可以切换到Traits。

    所以我试着找出如何防止Play逃离我的 Tag -对象。但不幸的是,我找到的唯一有效的解决方案是覆盖模板编译器,并让用户在他的 Build.scala 设置。

    但我希望忽略了一个更简单的方法?

    2 回复  |  直到 11 年前
        1
  •  3
  •   Adam    11 年前

    如果您的html助手返回“html”而不是String,则不需要在视图中使用@html标记来包装它们。

    import play.api.templates.Html
    
    def a(src: String, value: String) : Html = Html(s"<a href='$src'>$value</a>")
    

    将在视图中调用,如下所示,无需在@Html中换行

    @a("www.example.com", "Example")
    
        2
  •  3
  •   Taig    11 年前

    自版本以来 2.2.0-M1 文档中出现了一种新方法,解释了如何将自定义格式添加到模板引擎中。这使我能够轻松地集成我的实用程序。

    自定义模板格式: Java , Scala