hangscer

playframework学习笔记-Handing form submission

2017/03/30

在play2.5文档中看到了constraints on form的概念,用于处理submission任务。
然而在Mastering PlayFrameWork for Scala书中并没有提到此概念,有必要记录学习成果。
首先定义UserData数据格式:

1
case class UserData(name:String,age:Int)

然后在比如SomeController中定义constraints on the form:

1
2
3
val userForm=Form(
mapping("name"->text,"age"->number)(UserData.apply _)(UserData.unapply _)
)
  • text:maps to scala.String,optionally takes minLength and maxLength
  • number:maps to scala.Int,optionally takes min,max and strict.
  • ………

我们还需要再view中定义form:

1
2
3
4
5
<form method="post" action="@routes.SimpleAppController.hello()">
<input type="text" name="name">
<input type="number" name="age"> // type="number" 严格的数据约束
<input type="submit" value="提交">
</form>

controller中定义路由:

1
2
3
4
def hello()=Action(parse.form(userForm)){implicit request=>
val userData=request.body
Ok(views.html.tags.notice(userData))
}

我们在parse对象中传入constraints on the fromrequest.body即可隐式转换为case class UserData对象。


这是最简单的演示,还有比如Mapping with tuplesMapping with singleOptional values等等。