欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

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

程序员文章站 2022-04-23 17:50:12
...
Tapestry 5.0.14近期已经发布,Tapestry社区非常兴奋,因为Tapestry离成为GA只有一步之遥了。如果你没有听说过Tapestry 5,介绍一下Tapestry 5是一个开源基于组件的web框架,对于原先的版本进行了完全的修改。一些开发者不喜欢先前的版本因为困难的学习曲线,一些开发者甚至写文章抱怨,但是T5是一个全新的架构,虽然思路和先前的版本一样。那么T5的好处是什么?为什么你应该考虑在你的项目中使用Tapestry?

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

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

public class AddChar {
  @Parameter(required=true)
  private String value;

  @Parameter(required=true)
  private int position;

  @Parameter(required=true)
  private String character;

  void beginRender(MarkupWriter writer){
    StringBuffer sb = new StringBuffer(value);

    sb.insert(position, character);

    writer.write(sb.toString());
  }
}


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


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


是不是非常简单?

2。容易创建模板

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

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

先创建:

@IncludeStylesheet( "context:css/myapp.css" )  
public class Layout {  
  
}  


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

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
    <head>
        <title>Tapestry5 Experiments</title>
    </head>
    <body>
<div id="wrap">
        <t:body/></div>
</body>
</html>


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

<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<div id="right">
      Hello</div>
</t:layout>


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

public class Search {

}


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

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

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

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <display-name>Tapestry5 Experiments</display-name>

    <context-param>
<param-name>tapestry.app-package</param-name>
<param-value>yourpackage</param-value>
    </context-param>
    <context-param>
<param-name>tapestry.production-mode</param-name>
<param-value>false</param-value>
    </context-param>

    <filter>
        <filter-name>app</filter-name>
        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>app</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>


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

public class AppModule
{
    public static void bind(ServiceBinder binder)
    {
        // binder.bind(MyServiceInterface.class, MyServiceImpl.class);

        // Make bind() calls on the binder object to define most IoC services.
        // Use service builder methods (example below) when the implementation
        // is provided inline, or requires more initialization than simply
        // invoking the constructor.
    }

    public static void contributeApplicationDefaults(
            MappedConfiguration<String, String> configuration)
    {
        configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
    }
}


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

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/

为什么你应该考虑使用Tapestry 5?
相关标签: Tapestry