Wie die Rückkehr der Modell-query-Ergebnis als JSON in scala, play framework
Bin ich mit dem Play framework 2.1.1 mit scala.Ich habe die Abfrage eines Datenbank-Tabelle zurück zu controller als Liste und dann konvertieren Liste zu string und zurück zu ajax-Aufruf von javascript-code.
Wie die Rückkehr der query-Ergebnis als json und zurück zu ajax-call-throught-controller?
Anwendung.scala
import play.api._
import play.api.mvc._
import play.api.data._
import views.html._
import models._
object Application extends Controller {
def index = Action {
Ok(views.html.index())
}
def getSummaryTable = Action{
var sum="Summary Table";
Ok(ajax_result.render((Timesheet.getAll).mkString("\n")))
}
def javascriptRoutes = Action { implicit request =>
import routes.javascript._
Ok(
Routes.javascriptRouter("jsRoutes")(
//Routes
controllers.routes.javascript.Application.getSummaryTable
)
).as("text/javascript")
}
}
Stundenzettel.scala
//Use PostgresDriver to connect to a Postgres database
import scala.slick.driver.PostgresDriver.simple._
import scala.slick.lifted.{MappedTypeMapper,BaseTypeMapper,TypeMapperDelegate}
import scala.slick.driver.BasicProfile
import scala.slick.session.{PositionedParameters,PositionedResult}
//Use the implicit threadLocalSession
import Database.threadLocalSession
import java.sql.Date
import java.sql.Time
case class Timesheet(ID: Int, dateVal: String, entryTime: Time, exitTime: Time, someVal: String)
object Timesheet {
//Definition of Timesheet table
//object TS extends Table[(Int,String,Time,Time,String)]("timesheet"){
val TSTable = new Table[Timesheet]("timesheet"){
def ID = column[Int]("id")
def dateVal = column[String]("date")
def entryTime = column[Time]("entry_time")
def exitTime = column[Time]("exit_time")
def someVal = column[String]("someval")
def * = ID ~ dateVal ~ entryTime ~ exitTime ~ someVal <> (Timesheet.apply _, Timesheet.unapply _)
}
def getAll: Seq[Timesheet] = {
Database.forURL("jdbc:postgresql://localhost:5432/my_db", "postgres", "password",null, driver="org.postgresql.Driver") withSession{
val q = Query(TSTable)
val qFiltered = q.filter(_.ID === 41 )
val qDateFilter = qFiltered.filter(_.dateVal === "01/03/2013")
val qSorted = qDateFilter.sortBy(_.entryTime)
qSorted.list
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich empfehle, verwenden Sie
spielen.api.libs.Json.toJson
.Hier ein Beispiel:
Json.toJson
gibt eineJsValue
für die Wiedergabe wird automatisch einapplication/json
header.Sehen Spielen Für Scala Kapitel 8.
Auch, vergessen Sie nicht, eine implizite (oder nicht), Json deserializer für Ihr Modell, ansonsten Scala compiler Schreien Sie :-). Sie können etwas tun :
oder verwenden Sie implicits wie :
und sogar erklären Ihre deserializer in Ihrem Modell companion-Objekts wie :
Begleiter Objekt
und in der Steuerung