Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用scala中的变量值设置对象的属性_Scala_Playframework 2.0 - Fatal编程技术网

使用scala中的变量值设置对象的属性

使用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

我正在尝试创建一个restful方法来更新数据库中的数据,我正在使用Scala on Play!框架我有一个名为Application的模型,我希望能够更新数据库中的应用程序。因此,put请求只需要要更新的应用程序的id,然后是要更新的可选属性

因此,在我的路线中,我有:

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)
从文档中签出