熟悉的Hello World

新创建一个工程,了解下重要文件的结构

.\app

controllers\models\views

目前比较流行的MVC架构

.\conf

application.conf   工程配置,包括数据库连接等

routes       路由配置,用于解析URL

找到.\app\views\application\index.html

修改页面内容,添加一个输入框和一个按钮

#{extends 'main.html' /}
#{set title:'Home' /} <form action="@{Application.sayHello()}" method="Get">
<input type="text" name="myName" />
<input type="submit" value="Say Hello" />
</form>

#{extends 'main.html' /}  表示页面继承自 main.html

#{set title:'Home' /}     设置页面标题

运行程序,进入页面 localhost:9000, 会提示错误,No route able to invoke action Application.sayHello was found

在Application.java中添加sayHello方法

public static void sayHello(String myName) {
render(myName);
}

添加sayHello页面,在.\app\views\application 下添加sayHello.html

#{extends 'main.html' /}
#{set title:'Home' /} <h1>Hello ${myName?: 'guest'}!</h1>
<a href="@{Application.index()}">Back to form</a>

运行效果如下:

对URL进行优化 http://localhost:9000/application/sayhello?myName=Alex

配置路由 .\conf\routes

在 * /{controller}/{action} {controller}.{action} 后添加:

GET     /hello                                    Application.sayHello

可以使用新的URL访问页面  http://localhost:9000/hello?myName=Alex

自定义Layout

Layout是所有页面的公共部分,修改.\app\views\main.html

<body>
Hello World APP
<hr /> #{doLayout /}
</body>
#{doLayout /}   会替换sayHello.html中的内容

添加验证

修改sayHello方法

import play.data.validation.Required;

public static void sayHello(@Required String myName) {
if(validation.hasErrors())
{
flash.error("Oops, please enter your name!");
index();
}
render(myName);
}

修改index.html,添加以下代码

#{if flash.error}
<p style="color:#c00">
${flash.error}
</p>
#{/if}

。。

  

Play Framework 第一个应用的更多相关文章

  1. Django REST framework 第一章 Serialization

    此章节将会介绍多种构成REST framework的重要模块,在每个部分如何一起配合上提供一个综合的全方面的了解. 准备 同样的创建一个新项目,创建一个新的app,将rest_framework跟新建 ...

  2. spring framework 第一章数据库管理(data access)

    spring data access 的网址:https://docs.spring.io/spring/docs/current/spring-framework-reference/index.h ...

  3. Entity Framework 第一篇

    这段时间研究了orm框架EF 写一写研究的历程和心得 先贴上核心代码 public interface ITransaction { bool IsTransaction { get;} void B ...

  4. iOS开发——创建你自己的Framework

    如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这些实现你可能并不想开源出来.此外,开发者也可能并不想看到你的所有代码,因为他们可 ...

  5. Code First :使用Entity. Framework编程(8) ----转发 收藏

    第8章 Code First将走向哪里? So far, this book has covered all of the Code First components that reached the ...

  6. .NET Framework各版本比较

    (1)本文比较了.NET Framework多个版本之间的区别,方便各位选择和切换.NET Framework. 版本号 发布日期 Visual Studio的版本 Windows上的默认情况 CLR ...

  7. iOS静态库及Framework 创建

    本文转自cocoachina,尊重作者的汗水. 讲述的非常透彻,有需要的朋友可以阅读实践.转载请注明出处 //=================以下留着备份==================// 在 ...

  8. Xcode——创建你自己的Framework

    (注:以下内容是基于Xcode7.2.1操作的,版本不一,可能界面内容不同!) 如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这 ...

  9. zend framework框架学习走起——从零开始,点击记录-安装

    zend framework第一步,先来安装下zend framework框架. 先介绍下,我这边的php配置环境,为图省事,我是安装wampserver来搭载php环境的,,php+Apache+m ...

随机推荐

  1. 在WCF数据访问中使用缓存提高Winform字段中文显示速度

    在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析.如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处 ...

  2. ASP.NET MVC ModelValidator小结

    当用户通过UI输入数据向程序交互时,都会出现一个潜在的错误,数据错误,要检查用户提交的数据是否正确,需要做数据验证,在ASP.NET MVC中,每当Action执行前都会对传入Action的Model ...

  3. Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我 ...

  4. xamarin.ios 实现圆形进度条

    using System; using UIKit; using System.Drawing; using CoreAnimation; namespace PMM { public class P ...

  5. FAILED BINDER TRANSACTION

    最近开发Widget,要在Widget上显示图片,出现了FAILED BINDER TRANSACTION错误,后来才发现是因为图片太大了.Widget使用的是RemoteViews,而Intent传 ...

  6. student表中创建触发器,实现student表和student _course表的级联删除

    create trigger Delete_sc on student for delete as delete student_course where student_course.s_no in ...

  7. Lucene(01)

    我的博客园博文地址:http://www.cnblogs.com/tenglongwentian/ Lucene,最新版是Lucene6.2.1,匹配的jdk版本是1.8正式版.这里用jdk7最后一版 ...

  8. scala泛函编程是怎样被选中的

    现在计算机技术发展现象是:无论硬件技术如何发展都满足不了软件需求:无论处理器变得能跑多快,都无法满足软件对计算能力的需要.按照摩尔定律(Moore's Law)处理器(CPU)每平方面积上包含的半导体 ...

  9. Java集合源码分析(五)HashSet<E>

    HashSet简介 HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null元素. HashSet源 ...

  10. CI框架源码阅读笔记6 扩展钩子 Hook.php

    CI框架允许你在不修改系统核心代码的基础上添加或者更改系统的核心功能(如重写缓存.输出等).例如,在系统开启hook的条件下(config.php中$config['enable_hooks'] = ...