邋遢居

我的Java天堂

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks

这几天在resin跑一个taglibcommon-controls http://www.common-controls.com/en/index.php)库。发现很多东西不能用。下图中的菜单全部变成了“logout”。其他的全部没有了。


这个页面在tomcat下跑起来的效果是:

怎么会是这样。看上去是不是很奇怪啊。

后来查看了一下cc-samples\WEB-INF\work\_jsp\_jsp\_template下的_header__jsp.java

发现

com.cc.framework.taglib.menu.MenuItemTag这个类只被创建了一次。而且在重复使用。

if (_jsp_MenuItemTag_3 == null) {

        _jsp_MenuItemTag_3 = new com.cc.framework.taglib.menu.MenuItemTag();

        _jsp_MenuItemTag_3.setPageContext(pageContext);

        _jsp_MenuItemTag_3.setParent((javax.servlet.jsp.tagext.Tag) _jsp_MenuTag_2);

}

于是我就在猜想啊向com.cc.framework.taglib.menu.MenuTag这个类的实例中添加了那么多MenuItem肯定就只加了这么一个实例了。所以在最后显示的只显示出最后设置的参数了。

 

最后查看有一个仁兄也遭遇了类是的情况。也用blog记录下来了。下面的话就是他的结论:

于同名标签,引用10,Tomcat就会创建10个方法和标签对象来做对应的处理。而Resin只会创建1个对应的标签实例,如果后面再 引用,则不会创建新的,只操纵唯一的一个实例。所以在标签的逻辑处理中,要注意属性释放和还原的情况。我犯的错误就是因为其中的一个属性一直保存在该实例 中并没有销毁,导致后面再处理的时候发生冲突。

 

http://b0r0j0.blogbus.com/logs/4028462.html


posted on 2007-04-05 16:36 Jet Geng 阅读(1448) 评论(1)  编辑  收藏 所属分类: Spring-Web

Feedback

# re: Taglib 遭遇Resin[未登录] 2007-04-05 17:24 Feng
很有价值的实际经验  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: