重新查看Play Framework发布的值
生活随笔
收集整理的這篇文章主要介紹了
重新查看Play Framework发布的值
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
與Play Framework 2.0一起使用發(fā)布的值而不定義表單映射,可能不像Play 1.x那樣明顯,這就是為什么我要編寫此快速備忘單。
對于此快速示例,讓我們定義以下視圖:
app / views / index.scala.html
@(message: String)message: @message <br /><h2>Scala form</h2><form action="@routes.ScalaPoster.save()" method="POST">scala name: <input name="scala_name"> <br />scala surname: <input name="scala_surname"> <br /><input type="submit" value="save"> </form><h2>Java form</h2><form action="@routes.JavaPoster.save()" method="POST">java name: <input name="java_name"> <br />java surname: <input name="java_surname"> <br /><input type="submit" value="save"> </form>和以下路由文件:
conf /路由
# Home page GET / controllers.Application.indexPOST /scala controllers.ScalaPoster.save POST /java controllers.JavaPoster.save使用Java,直接訪問請求正文:
app / controllers / JavaPoster.java
package controllers;import play.mvc.*;import views.html.*;import java.util.Map;public class JavaPoster extends Controller {public static Result save() {final Map<String, String[]> values = request().body().asFormUrlEncoded();final String name = values.get("java_name")[0];final String surname = values.get("java_surname")[0];return ok(index.render(String.format("You are %s, %s",surname, name)));}}或使用DynamicForm:
package controllers;import play.mvc.*;import views.html.*;import play.data.DynamicForm;public class JavaPoster extends Controller {public static Result save() {final DynamicForm form = form().bindFromRequest();final String name = form.get("java_name");final String surname = form.get("java_surname");return ok(index.render(String.format("You are %s, %s",surname, name)));}}現(xiàn)在是scala版本,可以訪問主體:
app / controllers / ScalaPoster.java
package controllersimport play.api.mvc._object ScalaPoster extends Controller {def save = Action { request =>def name = request.body.asFormUrlEncoded.get("scala_name")(0)def surname = request.body.asFormUrlEncoded.get("scala_surname")(0)Ok(views.html.index("You are %s, %s".format(surname, name))) }}并定義一個(gè)表格
package controllersimport play.api.mvc._import play.api.data.Form import play.api.data.Forms.tuple import play.api.data.Forms.textobject ScalaPoster extends Controller {val form = Form(tuple("scala_name" -> text,"scala_surname" -> text))def save = Action { implicit request =>def values = form.bindFromRequest.datadef name = values("scala_name")def surname = values("scala_surname")Ok(views.html.index("You are %s, %s".format(surname, name))) }}請注意上述示例中的隱式請求。 您可以將其顯式傳遞給bindFromRequest
def values = form.bindFromRequest()(request).data您也可以玩元組并發(fā)出類似
val data = form.bindFromRequest.getOk(views.html.index("You are %s, %s".format(data._2, data._1)))要么
val (name, surname) = form.bindFromRequest.getOk(views.html.index("You are %s, %s".format(surname, name)))當(dāng)然,如果您只想讀取一個(gè)過帳值,可以發(fā)出:
def name = Form("scala_name" -> text).bindFromRequest.get有幾種方法可以實(shí)現(xiàn)它。 希望這對您有所幫助。
參考: Play Framework發(fā)布了我們的JCG合作伙伴 Sebastian Scarano在“ 玩轉(zhuǎn)Play框架”中 重新審視的價(jià)值觀 ! 博客。
翻譯自: https://www.javacodegeeks.com/2012/07/play-framework-posted-values-revisited.html
總結(jié)
以上是生活随笔為你收集整理的重新查看Play Framework发布的值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux线程查看命令(linux线程查
- 下一篇: 使用Gradle引导旧式Ant构建