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 所必需的语法,除了它看起来 很奇怪 因为它完全有效并且没有理由反对它。
'id
是 Symbol
。
如果您不喜欢 可以 使用 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._"
我正在尝试使用 Play Framework 2 构建表单,usual syntax 是:
@helper.form(action = routes.Application.submit, 'id -> "myForm") {
}
注意单引号是在id打开之前,永远不会关闭。
我可以使用另一种语法来做同样的事情吗?
不,这是 Scala 的 Symbol as pointed in other answer 所必需的语法,除了它看起来 很奇怪 因为它完全有效并且没有理由反对它。
'id
是 Symbol
。
如果您不喜欢 可以 使用 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._"