`
shinewang
  • 浏览: 35082 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Play with Play! - Play!最酷的5个功能

阅读更多

 

本文通过 5个例子展示了 Play!框架背后的哲学。

 

1. 绑定 HTTP 参数到 Java 方法

通过在 Java方法中定义和 HTTP参数同名的参数就可以方便的取得 HTTP中的参数值。

例如:

/articles/archive?date=08/01/08&page=2

你可以通过定义方法参数来获取 date page的值:

<!---->public   static   void  archive(Date date, Integer page) {
    List
< Article >  articles  =  Articles.fromArchive(date, page);
    render(articles);
}

也可以直接绑定到类:

<!---->public   class  Person {
  String name;
  Integer age;
}

public   static   void  add(Person p) {
  p.save();
}

 

HTML中如下定义:

<!---->< form  action ="/Directory/add"   >
 Name: 
< input  type ="text"  name ="p.name"   />
 Age: 
< input  type ="text"  name ="p.age"   />
</ form >

 

2. 通过调用 Java 方法重定向到相应的 action

只需要调用相应的 Java方法就能方便地重定向到另一个 action Play!会生成正确的 redirect response,而不是 forward

 

<!---->public   static   void  show(Long id) {
    Article article 
=  Article.findById(id);
    render(article);
}

public   static   void  edit(Long id, String title) {
    Article article 
=  Article.findById(id);
    article.title 
=  title;
    article.save();
    show(id);
}

 

 

注意:在 edit action的最后重定向到了 show action

 

在模板中你可以使用类似的符号来生成链接:

<a href="@{Article.show(article.id)}">${article.title}</a>

最终生成的 HTML

<a href="/articles/15">My new article</a>

 

3. 直接把 Java 对象 传递到页面模板

在大多数 Java框架中,你需要写类似下面代码来把 Java对象传递给页面模板:

<!---->Article article  =  Article.findById(id);
User user 
=  User.getConnected();
Map
< String, Object >  model  =   new  HashMap < String,Object > ();
model.put(
" article " , article);
model.put(
" user " , user);
render(model);

 

Play!中你只需要这么做:

<!---->Article article  =  Article.findById(id);
User user 
=  User.getConnected();
render(article, user); 

4. 方便的文件上传

Play!框架中实现文件上传很方便:

HTML form

<!---->< form  action ="@{Article.uploadPhoto}"  method ="POST"  enctype ="multipart/form-data" >
    
< input  type ="text"  name ="title"   />
    
< input  type ="file"  id ="photo"  name ="photo"   />
    
< input  type ="submit"  value ="Send it  "   />
</ form >

 

Java代码:

<!---->public   static   void  uploadPhoto(String title, File photo) {
   
}

 

5. 不用任何配置就可以把应用分布到多个 JVM

由于应用程序被设计成无状态的,所以你可以简单地在多台服务器上启动同一个应用,然后通过 HTTP层面的负载均衡来实现分布式应用。不需要设置一个负债的服务器集群。

 

----------

Play With Play!系列目录

http://www.blogjava.net/shinewang/archive/2008/12/25/248237.html


2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics