知识大全 自定义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相关参考
Struts:自定义taglib的开发[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! EV
DELPHI基础教程:Delphi自定义部件开发(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
DELPHI基础教程:Delphi自定义部件开发(二)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
DELPHI基础教程:Delphi自定义部件开发(三)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
DELPHI基础教程:Delphi自定义部件开发(四)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
JSP自定义标签开发流程[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一概述 jsp(
开发Eclipse下的自定义控件[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文首先介
JSP自定义标签开发入门 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一般情况下开发jsp自定
DELPHI基础教程:Delphi自定义部件开发(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
DELPHI基础教程:Delphi自定义部件开发(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看