众所周知,Displaytag从1.0升级到1.1之后对列修饰器的接口做了改进,在1.1及其后续版本中ColumnDecorator已经不推荐使用,以DisplaytagColumnDecorator替代之,我们可以看到,这两个接口之间的主要不同是集中在接口的decorate方法所接受的参数上,这两个接口中decorate方法的原型分别是:
ColumnDecorator:String decorate(Object columnValue) throws DecoratorException;
DisplaytagColumnDecorator:Object decorate(Object columnValue, PageContext pageContext, MediaTypeEnum media) throws DecoratorException;
至于DisplaytagColumnDecorator中decorate方法的返回类型也和原来不同主要是为了支持链模式,我们在此不予讨论,我想说的是因为传参的不同而使得接口改变说明了Displaytag在设计上的缺陷。假如以后Displaytag的设计者发现列修饰器类在完成其工作时依然需要其余的参数呢,是不是还要再设计一个Displaytag2ColumnDecorator同事废止DisplaytagColumnDecorator呢?这绝不是危言耸听。
还是从JSR的某些API中吸取点经验吧,把decorate方法的参数设计成某个单独的类是不是会更好呢?在Servlet或者JSP规范中经常会见到XxxContext的概念,我个人认为这是一种好办法。假想一下,如果当初Displaytag的ColumnDecorator中的decorate方法的原型设计成下面这样:
Object decorate(DecoratorContext _context) throws DecoratorException;
情况可能就会好的多,当然在它的1.0版本中DecoratorContext的定义可能看起来是下面这样。
public final class DecoratorContext{
private Object decoratedValue;
public Object getDecoratedValue() {
return decoratedValue;
}
public void setDecoratedValue(Object decoratedValue) {
this.decoratedValue = decoratedValue;
}
}
ColumnDecorator的实现类可以通过上下文环境获得要装饰的对象: Object value=_context.getDecoratedValue(); 重要的是假如到了1.1版本,我们可以完全不用改变ColumnDecorator接口本身而直接对DecoratorContext进行升级,这时的DecoratorContext看起来是下面这样。
public final class DecoratorContext{
private Object decoratedValue;
private PageContext pageContext;
private MediaTypeEnum media;
//Getters and Setters
……
}
如此一来使用1.1版本的用户可以轻松的通过这个上下文环境获取到PageContext或者MediaTypeEnum,而同时又不会伤害到使用旧版本的用户,也就是说旧版本的用户在进行升级时,如果有哪个已存在的列装饰器的实现想要在工作的过程中使用PageContext的话它不必再修改自己所要实现的接口了,让DisplaytagColumnDecorator去见鬼吧。
当然DecoratorContext对象中各个属性的赋值工作是框架本身完成的,使用Displaytag的开发者完全不必担心这一点。
The article is end.
分享到:
相关推荐
displaytag标签扩展:鼠标经过行变色功能
displaytag标签使用详解 应用实例
DisplayTag标签使用说明DisplayTag标签使用说明DisplayTag标签使用说明DisplayTag标签使用说明DisplayTag标签使用说明DisplayTag标签使用说明
displaytag所有包(资源) 及使用方法
displaytag-1.2.jar 显示标签
displaytag的使用方法(用于数据表格的显示和功能控制)Displaytag1.1版本使用方法
关于displaytag标签的使用 使用方便 做网页的时候用的着
示例如何使用displaytag,详细介绍displaytag在使用方式上的不同,具有举一反三的效果
DisplayTag分页及属性
Displaytag实现分页
很全面的DisplayTag中文帮助文档,对了解和使用该标签有很大的帮助
基于DisplayTag的分页方案
displaytag-1.2
displaytag1.2.jar 下载
第三个是displaytag的应用文件 两个版本的程序都可以运行 并且程序中含有数据库文件 可以导入 displaytag是一个很好的插件 网上有很多资源 可是一直找不到好的代码示例 花了一个星期熟悉整理了下 分享给大家了 ...
总结网络中Display Tag使用,非常经典,帮助你学习和了解displaytag
displaytag 标签 用于显示list数据以及分页功能
这是一个displayTag包,包括源码和jar包
非常好的资源,提供用运,技术,思路,例子,是人轻松灵活的运用