Play框架:有没有办法避免奇怪的表单助手语法?

时间:2015-03-03 10:55:51

标签: java forms scala playframework playframework-2.0

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

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

请注意,单引号是在id打开之前,从不关闭。

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

3 个答案:

答案 0 :(得分:4)

'idSymbol

如果您不喜欢这个语法,可以使用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所需的语法,无论如何,除了它看起来很奇怪因为它完全有效并且没有理由与之抗争。