Play 框架:有没有办法避免奇怪的形式辅助语法?

Play framework: is there a way to avoid strange form helper syntax?

我正在尝试使用 Play Framework 2 构建表单,usual syntax 是:

@helper.form(action = routes.Application.submit, 'id -> "myForm") {   
}

注意单引号是在id打开之前,永远不会关闭。

我可以使用另一种语法来做同样的事情吗?

不,这是 Scala 的 Symbol as pointed in other answer 所必需的语法,除了它看起来 很奇怪 因为它完全有效并且没有理由反对它。

'idSymbol

如果您不喜欢 可以 使用 Symbol("sym") 语法,但它不是标准的。

scala> 'symbol == Symbol("symbol")
res0: Boolean = true

可以通过隐式转换解决它。不过,这将需要使用 scala 源文件(看起来你正在使用 java,但你可以混合使用它们)。

app/libs/SymbolImplicits.scala

package example.libs

object SymbolImplicits {
    implicit def string2Symbol[A](s: (String, A)): (Symbol, A) = (Symbol(s._1), s._2)
}

那么在你看来你会@import example.libs.SymbolImplicits._,所以你可以这样做:

@helper.form(action = routes.Application.submit, "id" -> "myForm") {   
}

"id" -> "myForm" 然后隐式转换为 'id -> "myForm".

为避免在每个视图中使用该导入,您还可以将此行添加到 build.sbt(或 Build.scala 项目属性中):

TwirlKeys.templateImports += "example.libs.SymbolImplicits._"