【发布时间】:2014-05-17 01:37:02
【问题描述】:
似乎我遗漏了一些东西,但这是我所得到的(仅发布相关部分)。其中 MyService.save 返回 Future[Option[MyCompany] ]。
def myPost = Action.async(parse.json) { request =>
val mn = Json.fromJson[MyEntity](request.body)
mn.map{
case m : MyEntity => MyService.save(m).map{f=>
f.map(mm=> Ok(mm ) )
}
}.recoverTotal {
e => Future { BadRequest("Detected error:" + JsError.toFlatJson(e)) }
}
}
虽然我已经定义了
implicit val companyWriter: Writes[MyCompany] = (...)
而且这个隐式在作用域内,它显示编译错误
Cannot write an instance of MyCompany to HTTP response. Try to define
a Writeable[MyCompany]
仅供参考:这个作家在我做 Json.toJson(myCompany) 的其他地方使用,在那里它找到并且工作正常。 有什么特别要 async 好的吗?
编辑 看来 Ok() 方法无法确定需要将 MyCompany 转换为 json。以下似乎有效。
Ok(Json.toJson(mm) )
这是因为 Ok 的参数可以变化吗?另外,上面的代码中有太多的“地图”。有什么改进建议并使它更简洁吗?
【问题讨论】:
标签: scala playframework