2013-08-27 9 views
9

Znalazłem to schludny słupek przed tym pytaniem (ale nie rozwiązuje mojego problemu):Jak zdobyć dane formularza w grze ram

Próbuję aktualizacji rekordu z wywołania ajax przy użyciu ramy grać jako backend.

Oto niektóre dane dotyczące moją prośbę:

Request URL:http://172.20.12.50:9000/updateName 
Request Method:PUT 

Form Data 
name=&value=Testttt&pk=367 

enter image description here

Oto jak staram się sprawdzić, co mam na stronie serwera:

Logger.info("PK IS " + request().getQueryString("pk")); 

To jest to, co ja w dzienniku:

[info] application - PK IS null 

Jak uzyskać te parametry z FormData? Mam te dane dotyczące mojego żądania z firebug

Odpowiedz

13

Dane POST są dostępne w kontrolerze z request().body().

Na ciele można wywołać .asFormUrlEncoded(), aby pobrać Map danych. Więcej informacji znajdziesz w documentation.

W przypadku bardziej złożonych przypadków użycia można użyć parametru Form API do zdefiniowania ograniczeń danych i sprawdzania poprawności oraz powiązania danych bezpośrednio z określoną klasą.

1

Adaptacja http://www.playframework.com/documentation/2.0/ScalaForms

import play.api.data._ 
import play.api.data.Forms._ 

case class MyFormData(name: Option[String], value: String, pk: Long) 

val myForm = Form(
    mapping(
     "name" -> optional(text), 
     "value" -> text, 
     "pk" -> number 
    )(MyFormData.apply)(MyFormData.unapply) 
) 

myForm.bindFromRequest.fold(
    formWithErrors => // binding failure, you retrieve the form containing errors, 
    value => // binding success, you get the MyFormData value 
) 

Oczywiście zastąpić MyFormData czegoś sensownego do swojej domeny.

0

Można go pobrać pliki:

val music = request.body.file("music").get 

dla części ciała jako przykład:

var tracktitle = "" 
     request.body.dataParts.get("tracktitle").get.foreach(value => tracktitle = value)