ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 为什么你应该考虑使用Tapestry 5?

为什么你应该考虑使用Tapestry 5?

原创 Linux操作系统 作者:Java006 时间:2008-08-28 09:49:34 0 删除 编辑
Tapestry 5.0.14近期已经发布,Tapestry社区非常兴奋,因为Tapestry离成为GA只有一步之遥了。如果你没有听说过Tapestry 5,介绍一下Tapestry 5是一个开源基于组件的web框架,对于原先的版本进行了完全的修改。一些开发者不喜欢先前的版本因为困难的学习曲线,一些开发者甚至写文章抱怨,但是T5是一个全新的架构,虽然思路和先前的版本一样。那么T5的好处是什么?为什么你应该考虑在你的项目中使用Tapestry?

1。创建定制的组件非常简单和快捷

考虑一下通过Taglib来创建定制组件?或者更糟糕的用JSF来创建定制组件?通过T5来创建组件简捷而充满乐趣,因为它基于最普通基本的POJO,这意味这你能够单元测试你的定制组件。下面是一个T5组件的一个例子:

Java代码
  1. public class AddChar {   
  2.   @Parameter(required=true)   
  3.   private String value;   
  4.   
  5.   @Parameter(required=true)   
  6.   private int position;   
  7.   
  8.   @Parameter(required=true)   
  9.   private String character;   
  10.   
  11.   void beginRender(MarkupWriter writer){   
  12.     StringBuffer sb = new StringBuffer(value);   
  13.   
  14.     sb.insert(position, character);   
  15.   
  16.     writer.write(sb.toString());   
  17.   }   
  18. }  


然后能够在页面模板中调用:
Html代码
  1. <t:addChar value="literal:HelloWorld" position="5" character="literal:-"/>  


或者如果你希望将它嵌入你的HTML tag,你的web设计者能够在他熟悉的HTML设计中预览它,你能这样使用:
Html代码
  1. <span t:type='addChar' t:value="literal:HelloWorld" position="5" character="literal:-"/>   


是不是非常简单?

2。容易创建模板

如何在T5中创建模板templates?(tapestry社区也称之为布局layout或者边框border,从T4中继承而来)

使用下面的代码创建,非常简洁:

先创建:

Java代码
  1. @IncludeStylesheet( "context:css/myapp.css" )     
  2. public class Layout {     
  3.      
  4. }    


然后创建template使用和组件类同一名称Layout.tml:

Html代码
  1. <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">  
  2.     <head>  
  3.         <title>Tapestry5 Experimentstitle>  
  4.     head>  
  5.     <body>  
  6. <div id="wrap">  
  7.         <t:body/>div>  
  8. body>  
  9. html>  


元素告诉你插入你的页面片断主体,下面是你的页面片断代码:

Html代码
  1. <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">  
  2. <div id="right">  
  3.       Hellodiv>  
  4. t:layout>  


下面是page class,你能写入你的逻辑代码:

Java代码
  1. public class Search {   
  2.   
  3. }  


这是被成为Controller中写下你的前台逻辑。所有的内容都很简单,提升你的开发效率。忘记其他第三方开发工具比如Sitemesh吧。

3。更少的需要维护和配置的XML代码

很多配置都在web.xml文件中,但是在T5中,配置写入了java classes文件。下面是例子:

Xml代码
  1. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  4.          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"   
  5.          version="2.5">  
  6.   
  7.     <display-name>Tapestry5 Experimentsdisplay-name>  
  8.   
  9.     <context-param>  
  10. <param-name>tapestry.app-packageparam-name>  
  11. <param-value>yourpackageparam-value>  
  12.     context-param>  
  13.     <context-param>  
  14. <param-name>tapestry.production-modeparam-name>  
  15. <param-value>falseparam-value>  
  16.     context-param>  
  17.   
  18.     <filter>  
  19.         <filter-name>appfilter-name>  
  20.         <filter-class>org.apache.tapestry5.TapestryFilterfilter-class>  
  21.     filter>  
  22.     <filter-mapping>  
  23.         <filter-name>appfilter-name>  
  24.         <url-pattern>/*url-pattern>  
  25.     filter-mapping>  
  26.   
  27. web-app>  


在T5中web.xml是你唯一需要管理的文件。其他配置都放在java class中。用于配置的java class文件名称为:AppModule.java,在web.xml中配置,类似这样:

Java代码
  1. public class AppModule   
  2. {   
  3.     public static void bind(ServiceBinder binder)   
  4.     {   
  5.         // binder.bind(MyServiceInterface.class, MyServiceImpl.class);   
  6.   
  7.         // Make bind() calls on the binder object to define most IoC services.   
  8.         // Use service builder methods (example below) when the implementation   
  9.         // is provided inline, or requires more initialization than simply   
  10.         // invoking the constructor.   
  11.     }   
  12.   
  13.     public static void contributeApplicationDefaults(   
  14.             MappedConfiguration configuration)   
  15.     {   
  16.         configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");   
  17.         configuration.add(SymbolConstants.PRODUCTION_MODE, "false");   
  18.     }   
  19. }  



这种方式让配置简单,也让发现问题更加简单。

T5其他特点还包括:

4。约定大于配置(这种思想现在很流行,T5也使用了)

5。和Groovy无缝集成

6。提供非常友好的URL

7。支持AJAX


8。和Hibernate无缝集成


9。和Spring框架无缝集成



推荐阅读整篇文章:http://joshuajava.wordpress.com/2008/08/21/why-you-should-consider-tapestry-5/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14734416/viewspace-438623/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-07

  • 博文量
    122
  • 访问量
    575100