使用scala中的变量值设置对象的属性
我正在尝试创建一个restful方法来更新数据库中的数据,我正在使用Scala on Play!框架我有一个名为Application的模型,我希望能够更新数据库中的应用程序。因此,put请求只需要要更新的应用程序的id,然后是要更新的可选属性 因此,在我的路线中,我有:使用scala中的变量值设置对象的属性,scala,playframework-2.0,Scala,Playframework 2.0,我正在尝试创建一个restful方法来更新数据库中的数据,我正在使用Scala on Play!框架我有一个名为Application的模型,我希望能够更新数据库中的应用程序。因此,put请求只需要要更新的应用程序的id,然后是要更新的可选属性 因此,在我的路线中,我有: PUT /v1/auth/application controllers.Auth.update_application(id: Long) 我目前的方法是: def update_applicatio
PUT /v1/auth/application controllers.Auth.update_application(id: Long)
我目前的方法是:
def update_application(id: Long) = Action { implicit request =>
var app = Application.find(id)
for((key, value) <- request.queryString) {
app."$key" = value(0)
//app.name = value(0)
}
val update = Application.update(id, app)
Ok(generate(
Map(
"status" -> "success",
"data" -> update
)
)).as("application/json")
}
def update_应用程序(id:Long)=操作{隐式请求=>
var app=Application.find(id)
对于((键,值)“成功”,
“数据”->更新
)
)).as(“应用程序/json”)
}
在上面的方法中,我将请求和应用程序对象作为映射实例循环,然后使用模型更新要更新的应用程序模型。我知道有一种更简单的方法是将请求字符串创建为map,然后遍历对象,但我这样做是为了学习。我是游戏新手代码>和Scala
,仅仅新了一周
有没有一种方法可以动态地使用变量来设置属性?在循环结束时的上述方法中,我将在Groovy
中更新对象的属性。所以我在寻找Scala中的等价物。如果Scala不能做到这一点,那么完成这项任务的最佳方式是什么<代码>反射
?我不想把事情搞得太复杂玩!提供play.api.data.Forms
,允许创建使用案例类的apply()
和unapply()
方法的表单。然后,您可以调用form.fill(app)
以创建具有初始状态的表单,bindFromRequest(request)
以使用请求参数更新表单,以及get()
以获取具有更新字段的新实例
仅定义表单一次:
val appForm = Form(
mapping(
"field1" -> text,
"field2" -> number
)(Application.apply)(Application.unapply)
)
然后在控制器中:
val app = appForm.fill(Application.find(id)).bindFromRequest(request).get
val update = Application.update(id, app)
从文档中签出。播放!提供
play.api.data.Forms
,允许创建使用案例类的apply()
和unapply()
方法的表单。然后,您可以调用form.fill(app)
以创建具有初始状态的表单,bindFromRequest(request)
以使用请求参数更新表单,以及get()
以获取具有更新字段的新实例
仅定义表单一次:
val appForm = Form(
mapping(
"field1" -> text,
"field2" -> number
)(Application.apply)(Application.unapply)
)
然后在控制器中:
val app = appForm.fill(Application.find(id)).bindFromRequest(request).get
val update = Application.update(id, app)
从文档中签出