我正在尝试使用Play Framework 2构建表单,usual syntax是:
@helper.form(action = routes.Application.submit, 'id -> "myForm") {
}
请注意,单引号是在id打开之前,从不关闭。
我可以使用另一种语法来做同样的事情吗?
答案 0 :(得分:4)
'id
是Symbol
。
如果您不喜欢这个语法,可以使用Symbol("sym")
语法,但它不是标准语法。
scala> 'symbol == Symbol("symbol")
res0: Boolean = true
答案 1 :(得分:3)
你可以通过隐式转换解决它。这将需要使用scala源文件(虽然您似乎正在使用java,但您可以将它们混合使用)。
应用/库/ 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._"
答案 2 :(得分:1)
不,这是Symbol所指的Scala other answer所需的语法,无论如何,除了它看起来很奇怪因为它完全有效并且没有理由与之抗争。