Play Framework介绍:Hello World(1)(2)
分享于 点击 9125 次 点评:178
创建FORM
编辑helloworld/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>
我们使用@{…}符号请求Play自动产生调用Application.sayHello动作的方法。刷新浏览器。
Oops,出错了。因为引用了一个不存在的动作。需要在helloworld/app/controllers/Application.java中创建:
- package controllers;
- import play.mvc.*;
- public class Application extends Controller {
- public static void index() {
- render();
- }
- public static void sayHello(String myName){
- render(myName);
- }
- }
我们声明了myName参数,它会自动映射到form提交的HTTP请求的myName参数。刷新浏览器。
输入name提交,出现另一个错误.
因为Play渲染此动作的缺省模板时,没有找到它。我们创建文件helloworld/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
看下提交的url:
http://localhost:9000/application/sayhello?myName=chaos
它不够RESTful。因为Play通过缺省规则捕获了此URL
* /{controller}/{action} {controller}.{action}
可以编辑helloworld/conf/routes文件在缺省规则前添加一条规则,提供更自然的hello url
GET /hello Application.sayHello
用户点评