本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf
构建管道
在Tapestry内的一个共通的模式是过滤管道。在这个模式下,一个存在的服务是一个使用过滤的装饰器。这个过滤器将委派给这个服务,但在调用这个方法之前有机会去改变或替换参数,并且可以在返回前执行操作。这与命令链相似,但不同的是有两个接口(服务接口和过滤器接口) ,通过服务接口每个滤波器调用下一个过滤器。在命令链中,这个链调用每一个方法,每个必须在链中的下一个命令被调用之前返回。
服务接口和过滤器接口关系密切:过滤器接口必须匹配服务接口,但过滤器接口的每个方法必须有一个附加的参数,类型是服务接口。例如,一个管道执行字符串转换可以使用下面的接口:
- public interface StringTransformService
- {
- String transform(String input);
- }
- public interface StringTransformFilter
- {
- String transform(String input, StringTransformService delegate);
- }
一个过滤器的实现看上去是这样的:
- public class UpcasePreFilter implements StringTransformFilter
- {
- public String transform(String input, StringTransformService delegate)
- {
- return delegate.transform(input.toUpperCase());
- }
- }
代替的是,过滤器可以传递input给未改变的委派,但在结果上调用toUpperCase()。
- public class UpcasePostFilter implements StringTransformFilter
- {
- public String transform(String input, StringTransformService delegate)
- {
- return delegate.transform(input).toUpperCase();
- }
- }
-
PipelineBuilder服务对构造管道有用。这个服务经常注入在一个服务构建器方法内,与有序的服务配置一起。
这个构建器完成的是表现每个在管道中的过滤器作为这个服务接口的一个实例。
这个bridge被PipelineBuilder服务创建。这个terminator必须被提供。bridge和terminator实现了这个服务接口。
- public static StringTransformService build(
- @InjectService("PipelineBuilder")
- PipelineBuilder builder,
- List<StringTransformFilter> configuration,
- Log serviceLog)
- {
-
- StringTransformService terminator = new StringTransformService()
- {
- public String transform(String input)
- {
- return input;
- }
- };
-
- return builder.build(log,
- StringTransformService.class, StringTransformFilter.class,
- configuration,
- terminator);
- }
这里我们创建terminator给管道作为一个内建类的实例,并且提供给构建器。这个结果是一个新的服务压缩成整个管道。当没有过滤器时,这就是terminator。
分享到:
- 2007-05-28 12:45
- 浏览 2448
- 评论(0)
- 论坛回复 / 浏览 (0 / 3267)
- 查看更多
相关推荐
tapestry5.3.5 IOC用户登陆权限原码
一个web框架的IOC实现,Apache tapestry-ioc
Tapestry简述: Tapestry是一个servle的扩展,它运行于servlet容器(Tomcat)或包含servlet容器的服务器(如Jboss) 通过使用Tapestry,开发者完全不需要使用JSP技术,用户只需要使用Tapestry提供的模板技术即可, ...
资源名称:深入浅出Tapestry内容简介:本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在...
Tapestry 5.4.1 相关jar文件
Tapestry5.0 Building.Web.Applications
Tapestry5 英文版入门技术指导!
基于库 特征: 无需编写一行 Javascript 即可创建推送应用程序 完全可配置 使用设置传入消息的... xmlns : p = " tapestry:parameter " > <!-- type a chat message in this form --> < form t :
Packt.Publishing.Tapestry.5.Building.Web.Applications.Jan.2008.RETAiL.eBOOk-sUppLeX.pdf,虽然是英文的,只有200多页,很快就可以看完,做Tapestry的项目一般没有问题了
Tapestry是一个面向组件的Java Web应用程序框架,专注于性能和开发人员的生产力。 组件只是页面的可重用部分。 创建自己的组件非常容易,Tapestry附带了许多可以使用的组件(窗体,循环,选择,复选框,网格,...
Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...
Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...
(Tapestry)An infrastructure for Fault-Tolerant Wide-area Location and Routing.
将React( )与Tapestry( )一起使用。 该库提供了将Tapestry与JSX模板结合使用的基本集成。 用法 build.gradle : repositories { jcenter() } dependencies { runtime ' de.eddyson:tapestry-react:0.33.0 '...
Tapestry 4 官方文档中文版本,现在中文资料比较少,和大家共享一下
Tapestry 5开发
包含: tapestry 的源代码, tapestry集成spring2.0 tapestry快速启动 tapestry upload tapestry hibernate tapestry annotations
Tapestry5.0.16文档和大家一起学习
tapestry 实例tapestry 实例tapestry 实例tapestry 实例