1

私は、play フレームワークと angularjs を使用したライブラリ システムの実装に取り​​組んでいます。図書館で本を検索すると仮定すると、ユーザーは入力フィールドにキーワード値を入力します。この値は、GET 要求からコントローラーによって受信されます。MySQL データベースで書籍のリストを検索し、それらを json リクエストに変換して、angularjs を使用して実装された検索ページに表示する必要があります。json を使用して結果を Web ページに送り返す方法がわかりません。

GET     /books/all/search/:by/:value  controllers.Books.listBooks(by: String, value: String)



case class Book (
 bookId: String,
 title: String,
 author: String,
 category:String,
 price: Int,
 location: String,
 status: String
)

object Book{
   val bookParse = {
     get[String]("book.bookId") ~
     get[String]("book.title") ~
     get[String]("book.author") ~
     get[String]("book.category") ~
     get[Int]("book.price") ~
     get[String]("book.location") ~
     get[String]("book.status")map {
     case bookId~title~author~category~price~location~status => Book(bookId,title, author, category, price, location, status)
     }
  }


def searchByBookId(bookId: String) : List[Book]= {
  DB.withConnection {implicit connection =>
  SQL("select * from book where bookId = {bookId}").as(Book.bookParse *)
 }
}



object Books extends Controller {
 def listBooks(by: String, value:String): List[Book] =
 {
  if (by == "byBookId" )  Book.searchByBookId(value)
  else if(by == "byTitle")Book.searchByTitle(value)
  else Book.searchByAuthor(value)
 }
}

ここで、List[Book] の結果を Web ページに送信する必要があります

4

1 に答える 1

2
import play.api.libs.json._

implicit val bookFormat = Json.format[Book]

def listBooks(by: String, value: String) = Action {
  val books = if (by == "byBookId" ) Book.searchByBookId(value)
    else if(by == "byTitle")Book.searchByTitle(value)
    else Book.searchByAuthor(value)
  Ok(Json.toJson(books))
}

implicit val bookFormatBook コンパニオン オブジェクト上にあるか、Json.toJson呼び出されたときにスコープ内にある必要があります。

JSON に関するその他のドキュメント:

http://www.playframework.com/documentation/2.2.x/ScalaJson

于 2013-10-07T22:37:29.990 に答える