问题描述
这几天在学习JSTL自定义标签,看到迭代标签部分的时候有些东西没理解,帖出来,希望大家帮忙研究研究。/**当前标签运行时最先执行的部分,执行完该方法之后才会去执行doStartTag*/publicvoidsetCollection(Collectioncollection){iterator=collection.iterator();}@OverridepublicintdoStartTag()throwsJspException{try{if(iterator!=null){returniterNext(iterator);}}catch(Exceptione){e.printStackTrace();}returnSKIP_BODY;}@OverridepublicintdoAfterBody()throwsJspException{returniterNext(iterator);}@OverridepublicintdoEndTag()throwsJspException{try{if(bodyContent!=null){bodyContent.writeOut(bodyContent.getEnclosingWriter());}}catch(Exceptione){e.printStackTrace();}returnEVAL_PAGE;}privateintiterNext(Iteratoriterators){if(iterators.hasNext()){pageContext.setAttribute(name,iterators.next(),pageContext.PAGE_SCOPE);returnEVAL_BODY_AGAIN;}returnSKIP_BODY;}上例中的name、type、iterator都是私有成员变量,而且name和type都有各自的getter和setter方法。我想问的是在iterNext方法中的pageContext.setAttribute()方法将iterators里的数据压了进去,可是在doEndTag方法中的bodyContent.writeOut(bodyContent.getEnclosingWriter());这句话是怎样将从pageContext中取出的数据来写入到页面呢?另外,书上介绍在写迭代标签的时候不仅要写上面这个标签处理类,还要写一个tei的类,我现在关于这个tei类的作用很是困惑。望有这方面经验的朋友帮帮忙。
解决方案
解决方案二:
该回复于2011-04-07 17:31:31被版主删除
解决方案三:
没明白你要问什么东西
解决方案四:
ls的猫表情
解决方案五:
该回复于2011-04-19 15:05:32被版主删除