来玩Play框架 表单

2024-06-21 20:58
文章标签 表单 框架 play

本文主要是介绍来玩Play框架 表单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

 

表单(form)是最常见的从客户往服务器传递数据的方式。Play框架提供了一些工具。它们可以从表单中提取数据,验证提交数据的合法性,或者在视图中显示表单。我先来介绍最简单的使用表单提交数据的方式。 

 

增加表单

我可以用纯粹html的方式产生一个表单。在app/views下增加模板form.scala.html:

复制代码
<!DOCTYPE html>
<html><body><form method="POST" action="/postForm"><input type="text" name="content"></input><input type="submit"></input></form></body>
</html>
复制代码

 

在Application控制器中,增加一个动作form(),显示模板:

public static Result form() {return ok(views.html.form.render());
}

 

在routes中增加导航

GET     /form                       controllers.Application.form()

 

页面如下:

 

数据提取

在文本框中输入任意字符,点击submit后,表单将以POST方法提交到/postForm这一URL。增添负责处理该URL的动作,Application.postForm()

public static Result postForm() {DynamicForm in   = Form.form().bindFromRequest();String result    = in.get("content");return ok(result);
}

DynamicFormForm都来自play.data。Form.form().bindFormRequest()从请求中提取表单信息,并放入到DynamicForm类型的in对象中。

我上面用get()方法,来提取表单中不同名字的输入栏。比如上面的"content"。postForm()动作把表单中填写的内容直接显示。

 

增加routes记录

POST    /postForm                   controllers.Application.postForm()

 

在/form的页面下输入任意字符串并提交,查看效果。

 

我介绍了表单最基本的使用方式。下面了解Play框架提供的其它的表单工具。

 

表单对象

在动作内部,可以创建一个对象来指代表单。表单的每个输入栏为表单对象的一个属性。我可以通过增加标注(annotation)的方法,验证表单的输入(Form Validation)。

 

首先修改app/views/form.scala.html

复制代码
<!DOCTYPE html>
<html><body><form method="POST" action="/postForm"><label>Email</label><input type="email" name="email"><label>Password</label><input type="password" name="password"><label>Comment</label><input type="text" name="comment"><input type="submit"></form></body>
</html>
复制代码

这个表单有三个输入栏,名字分别为email, password和comment。

 

创建app/util/文件夹,在其中创建User.java。User类用于在Play内部指代上面的表单:

复制代码
package util;import play.data.validation.Constraints.Email;
import play.data.validation.Constraints.Required;public class User {@Emailpublic String email;@Requiredpublic String password;public String comment;
}
复制代码

User类指代一个表单的数据。我还为两个属性增加了标注。Play服务器可以据此验证输入的合法性。比如@Email的限定就要求输入为"*@*"的形式。@Required则要求输入栏不为空。如果违反这些限定,那么Play将抛出异常。

 

修改动作postForm()。User类的对象user用来保存表单数据。

public static Result postForm() {Form<User> userForm = Form.form(User.class);User user = userForm.bindFromRequest().get();return ok(user.email + " " + user.password);
}

最后的ok()中调用了表单对象中保存的数据。 

 

分别输入合法和不合法的数据,观察Play返回的页面。

 

表单模板

我上面手动创建模板中的表单,并保持视图中的表单和表单对象一致。我还可以在模板中直接调用表单对象。这样做,能让视图中的表单和表单对象自动的保持一致。

修改form.scala.html为

复制代码
@(userForm: Form[util.User])<!DOCTYPE html>
<html><body>@helper.form(action = routes.Application.postForm()) {@helper.inputText(userForm("email"))@helper.inputPassword(userForm("password"))@helper.inputText(userForm("comment"))<input type="submit">}</body>
</html>
复制代码

这里使用了Play所提供的helper工具。helper可以在表单中增加表单form,再加入不同类型的输入栏,比如inputText和inputPassword。

 

修改原有的动作form()

public static Result form() {Form<User> userForm = Form.form(User.class);
    return ok(views.html.form.render(userForm));
}

这里,表单对象作为参数传递给模板。最后的html页面中的表单,将由Play自动生成。

这篇关于来玩Play框架 表单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082322

相关文章

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理,放在容器中,这个容器就叫Ioc这些对象统称为Bean 用对象的时候不用new,直接外部提供(bean) 当外部的对象有关系的时候,IOC给它俩绑好(DI) DI和IO