知识大全 自定义taglib的开发[1]

Posted 变量

篇首语:古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 自定义taglib的开发[1]相关的知识,希望对你有一定的参考价值。

Struts:自定义taglib的开发[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  自定义标签必须实现下面三个接口中的一个 Tag IterationTag BodyTag

   Tag

  如果要实现这个接口 可以通过扩展TagSupport这个类 来写自己需要的方法 而不需要把Tag接口中的所有方法实现

  Tag接口的方法 doStartTag() doEndTag() getParent() setParent() release() setPageContext()

  在Tag类代码中不能像jsp一样 直接使用out隐含对象 他有一个对象可以使用pageContext 通过它的getOut()方法可以得到out对象 在标签内部 访问任何的隐含对象 都是通过调用pageContext的set方法

   IterationTag

  IterationTag接口与Tag接口类似 用于当一个自定义标签需要重复计算它的代码体的情况下 它扩展Tag接口并实现了一个新的方法doAfterBody()来实现循环 这个方法只有从doStartTag()返回EVAL_BODY_INCLUDE时才被调用 在执行doAfterBody()方法时 如果返回的是EVAL_BODY_AGAIN 那么将再次执行doAfterBody()方法 直到doAfterBody()返回的是SKIP_BODY或者EVAL_BODY_INCLUDE

   BodyTag

  BodyTag接口扩展了IterationTag并提供了对代码体内容进行操作的功能 就是在计算代码体的时候可以对已经形成的代码体进行修改 BodyContent对象就是用来保存对自定义标签体计算的结果 它有一个新方法doInitBody() 这个方法只有在doStartTag()方法返回EVAL_BODY_BUFFERED时才调用 此时它将创建一个BodyContent对象保存结果

  扩展自定义标签

  添加属性

  首先要在tld文件中加入一个属性元素 然后在java文件中需要定义这个属性以及它的的setter方法 属性<attribute>元素有四个子元素分别是<name> <required> <rtexprvalue> <description> 这里<rtexprvalue>表示的是属性是否接受scriptlet表达式的计算结果 默认情况下为false 即只能接受静态值

  添加变量

  可以在tld文件中给自定义标签加入一个<variable>元素 它的子元素包括<name given>表示保存变量的名字 <variable class>表示变量的java类型 <declared>用boolean表示这个变量是否为新的 <scope>表示变量的使用范围(AT_BEGIN表示从起始标签起 AT_END表示从终止标签后 NESTED表示起始标签和终止标签之间) 定义了变量之后 需要在java文件中把这个变量用pageContext setAttribute( object) 这里key值应该就是变量对外的名字

  使用TagExtraInfo(TEI)类

  这个对象中有两类对象可以使用 TagData(保存标签属性的信息) VariableInfo(描述代码变量)

  一段TagExtraInfo类代码实例

  public VariableInfo[] getVariableInfo(TagData data)     String variableName = data getAttributeString( name );    VariableInfo vi =      new VariableInfo(variableName String [] true VariableInfo AT_END);    VariableInfo[] tagVariables = new VariableInfo[ ];    tagVariables[ ] = vi;    return tagVariables; 

  可以通过TagData类的getAttributeString方法得到某个属性的值 还有另外一个方法getAttribute也是得到某个属性的值不过返回的是一个对象 而getVariableInfo方法必须返回一个VariableInfo数组 除此之外 还需要在tld中的元素定义<tag class>后加入一个<tei class>元素 说明TEI类的全称

  pageContext对象中含有的方法包括 getOut() getPage() getRequest() getResponse() getServletConfig() getServletContext() getSession()

  Tag接口中的返回常数意义

  EVAL_BODY_INCLUDE 告诉服务器正文的内容 并把这些内容送入输出流

  SKIP_BODY 告诉服务器不要处理正文内容

  EVAL_PAGE 让服务器继续执行页面

  SKIP_PAGE 让服务器不要处理剩余的页面

cha138/Article/program/Java/ky/201311/29145

相关参考

知识大全 自定义taglib的开发[2]

Struts:自定义taglib的开发[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  EV

知识大全 Delphi自定义部件开发(一)[1]

DELPHI基础教程:Delphi自定义部件开发(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Delphi自定义部件开发(二)[1]

DELPHI基础教程:Delphi自定义部件开发(二)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Delphi自定义部件开发(三)[1]

DELPHI基础教程:Delphi自定义部件开发(三)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Delphi自定义部件开发(四)[1]

DELPHI基础教程:Delphi自定义部件开发(四)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 JSP自定义标签开发流程[1]

JSP自定义标签开发流程[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一概述  jsp(

知识大全 开发Eclipse下的自定义控件[1]

开发Eclipse下的自定义控件[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文首先介

知识大全 JSP自定义标签开发入门

JSP自定义标签开发入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一般情况下开发jsp自定

知识大全 Delphi自定义部件开发(一)[3]

DELPHI基础教程:Delphi自定义部件开发(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Delphi自定义部件开发(一)[2]

DELPHI基础教程:Delphi自定义部件开发(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看