下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页设计ASP程序 → 开发JSP自定义行为__教程
开发JSP自定义行为__教程
日期:2007-5-20 1:19:01 人气:54     [ ]
上一页 [1] [2] [3] 下一页



通常说来,一个标记处理程序只对那个它要与之协同工作的父元素感兴趣。所以,一个好的想法是开发一个方法,该方法将沿着层次结构不断向上追溯,直到找到标记处理程序感兴趣的那个父元素。而这正是TagSupport类所实现的findAncestorWithClass()方法所做的工作。

Public static final Tag findAncestorWithClass(Tag from , Class klass) {

Boolean isInterface = false;



If(from == null || klass == null || (!Tag.class.isAssignableFrom(klass) &&

!(isInterface = klass.isInterface()))) {

return null;

}//假如from或者klass为null , 或者klass是一个类并且没有实现Tag接口,显然当前Tag找不到klass类的父元素。



for(;;) {

Tag tag = from.getParent();

If(tag == null) {

Return null;

} //表示没有父元素

if((isInterface && klass.isInstance(tag)) || klass.isAssignableFrom(tag.getClass()))

return tag; //假如klass是接口并且当前tag实现了该接口,那么找到了。

//或者当前tag是klass类型的,那么找到了。

else

from = tag;

}

}

9. 通过行为创建新的变量

当自定义行为创建一个变量时,它必须与JSP容器合作。

对于一个标记处理程序来说,创建一个新的对象并使得其他行为和JSP脚本代码可以访问这个对象,需要两件事情:

(1) JSP容器必须知道对象的名称和Java类型,这样它才能为变量声明生成代码。

(2) 变量必须被放置在某个JSP作用域内,这样才能通过findAttribute()方法找到它,并能赋值给这个变量。

第一件事由一个名为TagExtraInfo的类来完成。当你为一个引入对象的行为开发标记处理程序时,你必须创建TagExtraInfo类的一个子类。JSP容器在生成代码的时候就需要这样一个类的实例。

10. 开发迭代行为

开发迭代行为时,通常也需要一个TagExtraInfo子类,这样才能在loop的过程中访问loopID变量。

11. 如何创建TLD

当JSP容器将自定义行为元素转化成创建并调用正确的标记处理程序的代码时,JSP容器还需要关于哪个标记处理程序实现哪个自定义行为元素的信息。而这些信息都是从TLD那里获得的。另外,JSP容器还使用TLD信息来验证行为元素的属性列表是否正确。



TLD是一个XML文件,它包含了一个库中所有自定义行为的信息。使用自定义行为的JSP页面必须能识别相应的TLD,还能够利用taglib指令元素在页面中识别出用于行为的名称空间前缀。如:

<%@ taglib uri=”/WEB-INF/tlds/orataglib_1_0.tld” prefix=”ora” %>

….

<ora:redirect page=”main.jsp”/>

JSP页面里遇到前缀匹配的行为时,JSP页面就会用TLD来查找它需要的信息。



TLD文件中的内容:

(1) 最顶部:标准的XML声明和一个DOCTYPE声明。(这两个声明指定了文件的文档类型定义Document Type Definition , DTD)。

(2) <taglib>元素: TLD的主元素,它包含了描述库的所有特定元素。

(3) <tlibversion>元素:指定标记库的版本。必须

(4) <jspversion>元素:指定了库所依赖的JSP规范的版本。默认值为1.1。可选

(5) <shortname>元素:必须元素。这个元素的值中不能包含空格或其他特殊字符,也不能以数字或下划线开头。

(6) <uri>元素:可选,字符规则同上。

(7) <info>元素:可选,

(8) TLD中至少还必须包括一个<tag>元素。<tag>元素中包含了描述自定义行为的各个方面的其他元素:<name> <tagclass> <teiclass> <bodycontent> <info> <attribute>

l <name>元素是必须的。它包含了自定义行为元素对应的名称,这个名称是唯一的。

l <tagclass>元素也是必须的。

l 如果行为引入了变量,或者需要进行语法验证,那么就要使用<teiclass>元素。这个元素是可选的,用来制定TagExtraInfo子类的全名。

l <bodycontent>元素是一个可选元素,它的三个可能值为:empty , JSP或tagdependent。

l <info>元素是可选的,用来描述行为的目的。

l tag元素还必须为行为的每个属性设置<attribute>元素。当然每个元素中也包含了描述属性的另外一些元素:<name>,<required>和<rtexprvalue>

12. 语法验证

(1) 最简单的语法验证是:

当JSP容器将一个JSP页面转化成Servlet时,它会将自定义行为元素和TLD中行为元素的规范进行比较。这样就可以验证语法上的错误。
出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.