我们必须使用属性名作为字符串来在Play Framework视图中呈现HTML字段:
Scala的:
case class MyClass(myField: Int)
查看:
@(form: Form[MyClass])
...
@helper.inputText(form("myField"), '_label -> "Field Title")
这不是强类型!
那么有没有办法以强类型的方式提及字段名称? 像这样:
@helper.inputText(form(model => model.myField), '_label -> "Field Title")
我确信这在Scala中是可行的,但幸运的是我们有宏,并且可以在没有任何运行时开销的情况下实现这样的代码。
答案 0 :(得分:2)
不要将字符串视为属性的名称,而是将 字符串的表单字段ID /名称视为一个字符串,因为Form模拟表单而不是主要是对象(可能甚至非常有用的模型形式与元组作为数据结构,例如)。这确实是强类型的,因为除了字符串之外你不能发送任何东西。
您的问题是,您希望更多地使用类型系统,将实际值编码为类型或某些东西,以避免拼写错误等。
我认为你可以采取一些方法,有各种各样的好处和问题:
这些都没有真正发挥作用,除了常量方法之外的所有方法都会让你编写或多或少复杂的代码,所以你必须权衡这个解决这个问题的实际收益对你来说是值得的。 / p> 祝你好运!