我想知道如何从Play(2.2.x)Scala控制器类返回json响应数据以显示在我的视图页面上?我在Postgresql数据库中有json对象(表名:" test"并且有:id和name)。请为我提供任何解决方案。
我尝试了以下情况(a和b),但我不确定为什么我没有在控制器上得到响应(如:姓名),所以我可以在我的视图页面上显示它们?因为我是Play / Scala和Postgresql的新手。 案例a。如果我愿意: 模型:
def getTestValuesFromTable() = {
DB.withConnection { implicit connection =>
val selectJson =SQL("select name from test").on().apply().collect {
case Row(id:Long, Some(name:String)) =>
new TestContent(name)
}
//.head
//JsObject(selectJson().map { row => row[Long]("id").toString -> JsString(row[String]("name")) }.toSeq)
}
}
控制器:
def getTest = Action {
val response = TestContent.getTestValuesFromTable()
Ok("Done")
//Ok(response)
}
输出是:完成(应用程序执行正常,没有任何异常,当然json数据不会出现,因为我返回:仅完成,因此获得输出:"完成")
案例b。如果我喜欢这样:获取错误:没有足够的方法适用于方法:(n:Int)models.Testname in trait LinearSeqOptimized。未指定的值参数n。我真的不确定如何才能得到我的答复?
控制器:
def getTest = Action {
val response = TestContent.getTestValuesFromTable()
// Ok("Done")
Ok(response)
}
模型:
def getTestValuesFromTable(): JsValue = {
DB.withConnection { implicit connection =>
val selectJson = SQL("select * from test")
JsObject(selectJson().map { row => row[Long]("id").toString -> JsString(row[String]("name")) }.toSeq)
// val selectJson =SQL("select name from test").on().apply().collect {
// case Row(id:Long, Some(name:String)) =>
// new TestContent(name)
// }
//.head
JsObject(selectJson().map { row => row[Long]("id").toString -> JsString(row[String]("name")) }.toSeq)//not enough arguments for method apply: (n: Int)models.Testname in trait LinearSeqOptimized. Unspecified value parameter n.
}
}
请告诉我如何获得回复?
答案 0 :(得分:0)
struts.xml
方法不返回任何内容(getJsonValuesFromTable
)。要解决此问题,请将此方法的更改定义为
Unit
或明确设置类型:
def getJsonValuesFromTable(testContent: TestContent) = {
另外,作为让客户知道您要返回json的下一步,您应该设置内容类型:
def getJsonValuesFromTable(testContent: TestContent): Unit = {