- 浏览: 1022491 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
Scripting,Variable是用于自订标签与JSP页面之间沟通的变量,您可能会需要取出标签运算之后的值,以便在接下来的JSP页面中进行运算,例如取出某个标签运算后的值,设定为另一个卷标运算的属性值。
有几种方式可以用于设定Scripting Variable,主要的概念都是在JSP页面转译为Servlet时,透过一个中介者让Container知道那些变量该转译为Scripting Variable,以便JSP页面与自订卷标可以共享这个变量,这个类别可以是一个类别、也可以是一个web.xml中的描述。
设定Scripting Variable的一个方法,就是将之设定给pageContext,然后再告诉Container,设定pageContext的方法如下:
pageContext.setAttribute("varname", vardata);
来看一个例子,首先我们撰写下面这个类别:
DecodeTag.java
package onlyfun.caterpillar; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class DecodeTag extends TagSupport { private String code; public void setCode(String code) { this.code = code; } public int doStartTag() throws JspException { code = code + "-decoded"; pageContext.setAttribute("decoded", code); return SKIP_BODY; } }
这个类别仿真解碼的过程,decoded是用来作为Scripting Variable的变量名称,接下来必须告知容器这个信息,作法之一,就是透过TagExtraInfo类别与VariableInfo类别,直接来看如何撰写:
TagExtraDemo.java
package onlyfun.caterpillar; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class TagExtraDemo extends TagExtraInfo { public VariableInfo[] getVariableInfo(TagData data) { VariableInfo info = new VariableInfo("decoded", "String", true, VariableInfo.AT_END); return new VariableInfo[] {info}; } }
getVariableInfo()方法传回VariableInfo的数组值,数组值的内容就是Scripting Variable的相关信息,在VariableInfo中的建构中传入四个参数:Scripting Variable名称、Scripting Variable型态、之前有无宣告过、作用范围。
第三个参数若设定为true,表示之前有宣告过,直接使用宣告过的变量,如果为false,则会生成新的实例;第四个参数为Scripting Variable在JSP页面中可以作用的范围,分为三种:
- VariableInfo.AT_BEGIN:作用范围从标签开始至JSP页面结束。
- VariableInfo.AT_END:作用范围从标签结束至JSP页面结束。
- VariableInfo.AT_NESTED:作用范围从卷标开始至卷标结束。
接下来在tld档中告诉容器有关于自订卷标及TagExtraInfo类别的信息: decode.tld
... <tag> <description>Decode</description> <name>decode</name> <tag-class>onlyfun.caterpillar.DecodeTag</tag-class> <tei-class>onlyfun.caterpillar.TagExtraDemo</tei-class> <body-content>empty</body-content> <attribute> <name>code</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> ...
其中<tei-class>标签即用来告诉容器有关于TagExtraInfo类别的信息,容器将JSP页面转译为Servlet时就会用到这个信息,可以这么测试: test.jsp
<%@taglib prefix="caterpillar" uri="http://caterpillar.onlyfun.net/"%> <html> <body> 解碼前:${ param.code } <br> <caterpillar:decode code="${ param.code }"/> 解碼后:${ decoded } </body> </html>
上面这个方法的好处是使用一个类别集中管理标签的Scripting Variable,缺点则是若要修改变量,则必须修改TagExtraInfo类别后重新编译等;另一个方法则只要在tld档案中直接设定即可,不用透过 TagExtraInfo类别,设定的例子如下: decode.tld
... <tag> <description>Decode</description> <name>decode</name> <tag-class>onlyfun.caterpillar.DecodeTag</tag-class> <body-content>empty</body-content> <attribute> <name>code</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name-given>decoded</name-given> <variable-class>String</variable-class> <declare>true</declare> <scope>AT_END</scope> </attribute> </tag> ...
这次不需要透过<tei-class>的指定了,所使用的是<name-given>、< variable-class>、<declare>与<scope>四个标签,其意义与VariableInfo建构时 的四个参数相同。
使用固定的变量名称,则使用自订标签的人员必须事先知道Scripting Variable的名称,才可以在JSP页面中呼叫使用它,也可以让使用自订标签的人员自行决定名称,方法是使用<name-from- attribute>,例如: decode.tld
... <tag> <description>Decode</description> <name>decode</name> <tag-class>onlyfun.caterpillar.DecodeTag</tag-class> <body-content>empty</body-content> <attribute> <name>code</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>varname</name> <required>true</required> </attribute> <attribute> <name-from-attribute>varname</name-from-attribute> <variable-class>String</variable-class> <declare>true</declare> <scope>AT_END</scope> </attribute> </tag> ...
然后自订标签处理类别必须作一些修改,使其能够接收varname属性: DecodeTag.java
package onlyfun.caterpillar; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class DecodeTag extends TagSupport { private String varname; private String code; public void setVarname(String varname) { this.varname = varname; } public void setCode(String code) { this.code = code; } public int doStartTag() throws JspException? { code = code + "-decoded"; pageContext.setAttribute(varname, code); return SKIP_BODY; } }
接下来就可以在JSP页面中这么使用: test.jsp
<%@taglib prefix="caterpillar" uri="http://caterpillar.onlyfun.net/"%> <html> <body> 解碼前:${ param.code } <br> <caterpillar:decode varname="keyword" code="${ param.code }"/> 解碼后:${ keyword } </body> </html>
如果您透过继承SimpleTagSupport类别来实作自订标签,则在设定Scripting Variable时,可以简单的使用JspContext的setAttribute()方法来设定,而不需要额外的设定tld档案,例如: SimpleDecodeTag.java
package onlyfun.caterpillar; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class SimpleDecodeTag extends SimpleTagSupport { private String code; public void setCode(String code) { this.code = code; } public void doTag() throws JspException { code = code + "-decoded"; getJspContext().setAttribute("decoded", _code); } }
您可以使用下面这个JSP网页进行测试: test.jsp
<%@taglib prefix="caterpillar" uri="http://caterpillar.onlyfun.net/"%> <html> <body> 解碼前:${ param.code } <br> <caterpillar:decode code="${ param.code }"/> 解碼后:${ decoded } </body> </html>
发表评论
-
JSP自定义标签 实例
2011-12-31 15:07 1694定义:自定义标签是一种非常优秀的组件技术。通过使用自定义标签库 ... -
写自定义标签时标记attribute里rtexprvalue的用法
2011-12-31 11:00 1138其实以前也有写过自定义标签, 但是没有注意到过<rtex ... -
Tomcat 连接池配置 - META-INF
2011-12-30 15:07 1779Tomcat 6.0连接池配置 1.Tomca ... -
jsp指示元素
2011-12-30 15:06 1447指示元素 指示元素的作用是:指示容器在将JSP翻译成serv ... -
jsp脚本元素
2011-12-30 15:06 3350元素与模板数据 JSP页面内容可以分为两种类型,一种是能够被 ... -
jsp行为元素
2011-12-28 14:03 1751行为元素 行为元素的作用:与指示元素不同,行为元素是与特定的 ... -
jsp 隐藏对象
2011-12-28 13:42 1664隐藏对象即不用声明该 ... -
jsp button onclick事件
2011-12-28 13:26 1594<input onclick="doc ... -
比较全面的taglib标签库介绍
2011-12-28 13:25 4555一、定义标签文件(web.xml) <taglib&g ... -
JDK7的推出,oracle独揽Java,是好是坏
2011-09-29 16:51 1457今天在CSDN看到JDK7也推出了lambda语法, 还有JD ... -
MyEclipse6.0下构建SSH冲突问题解决方案
2008-10-29 12:55 1759终于不再苦恼了,这几天在做SSH的加载,一直报一些莫名其妙的错 ... -
hibernate----Inverse 和 cascade区别(2)
2008-10-29 12:54 11161、到底在哪用cascade=&q ... -
hibernate----Inverse 和 cascade区别(1)
2008-10-29 12:54 1695Inverse 和 cascade的区别 实际上,他们是互不 ... -
教你如何写log4j
2008-10-29 12:52 1569在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件 ... -
Spring写log4j
2008-10-29 12:51 1333Spring中使用LOG4J 1.在web.xml中添加 ... -
在Java SE环境下使用JPA1.0(2)
2008-10-29 12:29 23102) 创建配置文件persistence.xml ... -
在Java SE环境下使用JPA1.0(1)
2008-10-29 12:27 2105一、搭建环境 1) 搭建数据库环境 1、安装数据库( ...
相关推荐
Scripting Variable Tag File Tag File是從JSP 2.0開始新增的功能,主要的目的是讓撰寫JSP網頁的網頁設計人員即使在不懂Java語法的情況下,也可以使用JSP語法來自訂標籤。 簡介 Tag File <jsp: doBody>、<jsp:...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
1. **JSP元素**:JSP页面主要由指令(Directives)、脚本元素(Scripting Elements)和动作(Actions)组成。指令如`<%@ page %>`用于配置页面属性,`<%@ include %>`用于包含其他文件,`<%@ taglib %>`引入自定义...
1. **JSP元素**:包括指令(directives)、脚本元素(scripting elements)和动作(actions)。指令如`<%@ page %>`, `<%@ include %>`, `<%@ taglib %>`,用于配置页面属性。脚本元素分为声明(declarations)、...
2. **JSP元素**:JSP主要包含指令(Directives)、脚本元素(Scripting Elements)和动作(Actions)。指令如`<%@ page %>`, `<%@ include %>`, `<%@ taglib %>`用于设置页面属性、引入其他文件和注册标签库。脚本...
**JSP基本结构** 包括JSP指令(Directives)、脚本元素(Scripting Elements)、声明(Declarations)、表达式(Expressions)、动作(Actions)等。指令如`<%@ page %>`, `<%@ include %>`, `<jsp:include>`等,...
3. **脚本元素(Scripting Elements)**:包括Java表达式(`<%= %>`, 如`<%= someVariable %>`),脚本块(`<% ... %>`,可以包含任何Java代码),和声明(`! ... %>`,用于声明变量或方法)。 4. **内置对象...
基本结构包括JSP指令(Directives)、脚本元素(Scripting Elements)和动作元素(Actions)。例如,`<jsp:include>`用于动态包含其他页面,`<% %>`用于编写Java表达式,`! %>`定义Java变量或方法。 **2. JSP生命...
JSP有三个主要组成部分:指令(Directives)、动作(Actions)和脚本元素(Scripting Elements)。其中,脚本元素包括声明(Declarations)、脚本(Scripts)和表达式(Expressions),它们用于在页面上插入动态内容...
<description>The name of the scripting variable to be exposed.</description> </attribute> ... </tag> ``` 这里,`tag-class`指定处理该标签的Java类,`body-content`定义标签可以包含的内容,`attribute`则...