首页 > 编程语言 > 详细

《Play for Java》学习笔记(五)Form

时间:2014-04-02 05:16:35      阅读:532      评论:0      收藏:0      [点我收藏+]

本书第六章以一个实例介绍了Play Framework中Form的使用,如何绑定数据,如何进行验证,如何处理文件上传

一、项目结构

bubuko.com,布布扣

bubuko.com,布布扣

二、Play中表单的使用

1. 在Controller中使用Form

play.data包中包含了处理HTTP表单数据提交和验证(HTTP form data submission and validation)的一些helpers,一般步骤是定义一个play.data.Form并包裹其class,如:

Form<User> userForm =Form.form(User.class);
bubuko.com,布布扣
//Model—— User Object
public class User {
    public String email;
    public String password;
}
//controller—— userForm
Form<User> userForm = Form.form(User.class);  //1. 定义
//This form can generate a User result value from HashMap<String,String> data
Map<String,String> anyData = new HashMap();   //2. 写入数据到HashMap--mocking data
anyData.put("email", "bob@gmail.com");
anyData.put("password", "secret");
User user = userForm.bind(anyData).get();     //3. 写入数据到表单--绑定(保存数据)
//If have a request available in the scope, bind directly from the request content
User user = userForm.bindFromRequest().get();
bubuko.com,布布扣

用预设值显示表单——Displaying a form with preset values

bubuko.com,布布扣

bubuko.com,布布扣
public class Products extends Controller {
    private static final Form<Product> productForm = Form.form(Product.class);
    ...
    public static Result details(String ean) {
        final Product product = Product.findByEan(ean);
        if (product == null) {
            return notFound(String.format("Product %s does not exist.", ean));
        }
        Form<Product> filledForm = productForm.fill(product);
        return ok(details.render(filledForm));
    }
    ...
}
bubuko.com,布布扣

route是

GET         /products/:ean               controllers.Products.details(ean: String)

2. 在模板中使用表单(Form template helpers)

bubuko.com,布布扣

bubuko.com,布布扣


在模板中我们可以使用Form template的helpers来处理表单各个项

2.1 引入helper

  • @(productForm: Form[Product]) —— action传入的参数
  • @import helper._ —— Form helpers
  • @import helper.twitterBootstrap._ —— bootstrap helpers

2.2 生成<form> tag

@helper.form(action = routes.Products.save()) { ... }

可在生成的时候加入参数

@helper.form(action = routes.Products.save(),‘‘id -> "form") { ... }

2.3 生成 <input> element

bubuko.com,布布扣

还可以自定义HTML输入

bubuko.com,布布扣
@helper.input(myForm("email")) { (id, name, value, args) =>
    <inputtype="date"name="@name"id="@id" @toHtmlArgs(args)>
}
bubuko.com,布布扣

3. 处理表单的输入

bubuko.com,布布扣
① 创建boundForm对象,用于接受从HTTP传入的数据信息
boundForm将接受的表单数据传给Product的实例
③ produce.save()保存表单数据到Product的实例

 三、数据绑定

PLay中有三种绑定方式

  1. 表单绑定(Form binding),见前所述
  2. URL查询参数绑定(URL query parameters binding)
  3. URL路径绑定(URL path binding)

《Play for Java》学习笔记(五)Form,布布扣,bubuko.com

《Play for Java》学习笔记(五)Form

原文:http://www.cnblogs.com/JoannaQ/p/3639615.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!