欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Play Framework介绍:Hello World(1)(2)

来源: javaer 分享于  点击 9125 次 点评:178

创建FORM

编辑helloworld/app/views/Application/index.html模板

  1. #{extends 'main.html' /}  
  2. #{set title:'Home' /}  
  3.    
  4. <form action="@{Application.sayHello()}" method="GET">  
  5.     <input type="text" name="myName" />   
  6.     <input type="submit" value="Say hello!" />  
  7. </form> 

我们使用@{…}符号请求Play自动产生调用Application.sayHello动作的方法。刷新浏览器。

image

Oops,出错了。因为引用了一个不存在的动作。需要在helloworld/app/controllers/Application.java中创建:

  1. package controllers;  
  2.  
  3. import play.mvc.*;  
  4.  
  5. public class Application extends Controller {  
  6.  
  7.     public static void index() {  
  8.         render();  
  9.     }  
  10.       
  11.     public static void sayHello(String myName){  
  12.         render(myName);  
  13.     }  

我们声明了myName参数,它会自动映射到form提交的HTTP请求的myName参数。刷新浏览器。

image

输入name提交,出现另一个错误.

image

因为Play渲染此动作的缺省模板时,没有找到它。我们创建文件helloworld/app/views/Application/sayHello.html

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

然后刷新:

image

提供更好的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

image


相关栏目:

用户点评