Scala Play框架视图中的强类型表单字段
我们必须将属性名称用作字符串,以在Play Framework视图中呈现HTML字段: 斯卡拉:Scala Play框架视图中的强类型表单字段,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我们必须将属性名称用作字符串,以在Play Framework视图中呈现HTML字段: 斯卡拉: case class MyClass(myField: Int) 视图: 这不是强类型的 那么,有没有办法以强类型的方式提及字段名呢? 像这样: @helper.inputText(form(model => model.myField), '_label -> "Field Title") 我确信这在Scala中是可能的,但幸运的是我们有宏,这样的代码可以在没有任何运行时开销的情况
case class MyClass(myField: Int)
视图:
这不是强类型的
那么,有没有办法以强类型的方式提及字段名呢?
像这样:
@helper.inputText(form(model => model.myField), '_label -> "Field Title")
我确信这在Scala中是可能的,但幸运的是我们有宏,这样的代码可以在没有任何运行时开销的情况下实现。不要将字符串看作属性的名称,而是将表单字段id/名称看作字符串,因为表单建模的是表单,而不是对象(例如,使用元组作为数据结构对表单进行建模是可能的,甚至非常有用)。这确实是强类型的,因为在其中只能发送字符串 不过,您的问题是,您希望更多地使用类型系统,将实际值编码为类型或避免拼写错误的内容等 我认为你可以采取一些方法,有各种好处和问题:
- 编写自己的表单api,并使用类型系统以某种方式标识字段ID
- 在项目中强制使用常量作为键,而不是使用类型系统,而是决定这样做
- 为表单生成器和表单帮助程序编写自己的包装器,它们接受一些更严格的类型作为键
- 将模型字段表示为某种“属性”类型,并将其与表单生成器和表单帮助器的自定义包装器相结合
@helper.inputText(form(model => model.myField), '_label -> "Field Title")