学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> JSP >> Taglib 原理和实现之支持El表达式


Taglib 原理和实现之支持El表达式


  1.先看这么一个例子

<%@ page contentType="text/html; charset=gb2312" language="java"%>
<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<%
String tut = "tutorial";
request.setAttribute("tut",tut);
%>
The String in request is :
<c:out value="${tut}"/>
</body>
</html>

  2.如何支持el表达式

  在路径org.apache.taglibs.standard.lang.support下,有个叫 ExpressionEvaluatorManager.evaluate 的方法,当el表达式作为入参时,调用这个方法,在tag内即可自动把el表达式转化。例如,你想tag的value字段支持el表达式,那么只需在set方法里如下调用:

public void setValue(Object value)throws JspException
{
this.value = ExpressionEvaluatorManager.evaluate(
"value", value.toString(), Object.class, this, pageContext);
}

  ExpressionEvaluatorManager.evaluate有四个参数。第一个表示tag的名字,在取el表达式出错时使用。一般和属性名字相同。第二个要求字符串,通常简单调用输入对象的toString方法。第三个是类,通常用Object.class。第四个用this即可,第五个是pageContext变量。

  通常不用对这个方法思考太多。只需改改属性名字,其他照搬即可。

  注意:当你的tag属性支持el表达式时,你必须把它声明为Object对象。如上述的value,应该声明为:

private Object value = null;

  3.实例:让OutputTag支持El表达式

package diegoyun;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;

public class NewOutputTag extends TagSupport
{
private Object name = null;

public void setName(Object name) throws JspException
{
this.name = ExpressionEvaluatorManager.evaluate(
"name", name.toString(), Object.class, this, pageContext);
}
public int doStartTag() throws JspException{
try
{
JspWriter out = pageContext.getOut();
out.print("Hello! " + name);
}
catch (Exception e)
{
throw new JspException(e);
}
return EVAL_PAGE;


}
}

  在diego.tld里添加声明

<!--NewOutputTag-->
<tag>
<name>newout</name>
<tag-class>diegoyun.NewOutputTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>

  编写jsp测试

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/tlds/diego.tld" prefix="diego"%>
<html>
<body bgcolor="#FFFFFF">
<%
String s = "diego";
request.setAttribute("name",s);
%>
Test El supported tag:
<br>
<diego:newout name="${name}"/>

</body>
</html>

  可以看到页面输出为:

  Test El supported tag:
  Hello! diego


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

有联系方式吗,怎样联系你啊?...
游客 发表于2008-5-12 11:54:15
对"Taglib 原理和实现之支持El表达式"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 Taglib 原理和实现之支持El表达式 相关内容
Google搜索中 Taglib 原理和实现之支持El表达式 相关内容
雅虎中 Taglib 原理和实现之支持El表达式 相关内容
Sogou搜索中 Taglib 原理和实现之支持El表达式 相关内容

相关软件 最新回复帖子:

·Taglib 原理和实现之支持El表达式
·实例学用CorelDRAW9(一)
·AutoCAD模拟空间与图纸空间简介
·设计高效合理的MySQL查询语句讲解
·将CAD图纸转换为SolidWorks三维模型详解
·DW Ultradev打造留言本(一)
·DW Ultradev打造留言本(二)
·网上常用表情符号
·教你如何用Visual Basic编写病毒
·史上最小 55MB的Win XP现在就能下载


  相关软件 Taglib 原理和实现之支持El表达式相关文章
Taglib 原理和实现之什么是Taglib 深入剖析JSP和Servlet对中文的处理
JSP入门初级教程之Taglib Directiv JSP入门初级教程之plugin的使用
JSP入门初级教程之实现页面跳转 JSP入门初级教程之Actions的使用
JSP入门初级教程之预定义变量的使用 JSP入门初级教程之JSP指令
JSP入门初级教程之JSP概述 提升JSP应用程序的七大绝招
JSP连接SQL Server 2000系统配置 JSP/Servlet应用程序优化八法
JSP+JDBC(Thin模式)连接Oracle 用JSP构建三层管理信息系统
JSP动态输出Excel及中文乱码的解决 在JSP开发中模拟.NET WebForm(二)
在JSP开发中模拟.NET WebForm(一) Windows下JSP开发环境的配置
JSP/Servlet构建三层管理信息系统 JSP显示内容缓存技巧