4

我创建了一些实用程序来帮助我生成 HTML,并在我的视图中将它们引用为@div( "class" -> "well" ){ Hello Well. }. 到目前为止,这些类都是子类,NodeSeq因为它们当时没有被转义。但是我需要摆脱NodeSeq我的类层次结构的顶部,因为 Scala 的 xml 有缺陷,并且使我的代码变得 hacky,并且因为那时我可以切换到 Traits。

所以我试图找出如何防止 Play 逃脱我的Tag-objects。但不幸的是,我发现唯一有效的解决方案是覆盖模板编译器并让用户在他的Build.scala设置中指定我的编译器。

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

4

2 回答 2

3

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

自定义模板格式: JavaScala

于 2013-08-28T18:08:37.057 回答
3

如果您的 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")
于 2013-08-27T16:34:11.163 回答