`
yuanfen860913
  • 浏览: 119813 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lisayxw/archive/2006/10/31/1358509.aspx

分享到:
评论

相关推荐

    JSTL,EL表达式语法简介

    例如,使用EL表达式和`<c:if>`标签可以实现简单的条件判断: ```jsp ${user != null}"> 用户已登录:${user.name} ``` 综上所述,JSTL和EL是JSP开发中非常重要的工具,它们提供了丰富的功能,使开发者能够更加...

    EL表达式语言 非常详细

    ### EL表达式语言详解 #### 9.1 概述 在JSP页面开发中,为了提高代码的可读性和可维护性,开发者们逐渐转向使用标签库来替代传统的Java片段语言来实现页面的显示逻辑。然而,自定义标签虽然灵活,但也容易导致重复...

    EL表达式的使用方法

    EL表达式的语法主要有两种形式:`"${.}"` 和 `"${[ ]}"`。 - **形式一**:`${.}`,例如 `${user.name}` 表示获取名为`user`的对象的`name`属性值。 - **形式二**:`${[ ]}`,例如 `${user["name"]}` 或者 `${user...

    简单使用EL表达式标签

    **EL表达式简介** EL(Expression Language,表达式语言...通过简单使用EL表达式标签,我们可以轻松地在JSP页面中展示和处理数据,实现页面与后台的高效交互。理解和熟练运用EL表达式,对于提升Web开发技能至关重要。

    el表达式的相关介绍

    EL表达式通常以`$`符号和大括号`{}`包围,例如`${expression}`。EL表达式能够方便地访问JavaBean属性、Map对象、集合以及各种作用域中的属性。 1. **EL表达式的基本语法**: - `${expression}`是EL表达式的基本...

    java jsp EL表达式

    Java JSP EL表达式 EL表达式是Java服务器页面(JSP)的一种特殊语言,用于在Web应用...EL表达式和JSTL是Java服务器页面(JSP)中两个重要的语言,它们可以帮助程序员快速开发Web应用程序,减少代码量,提高开发效率。

    09_尚硅谷_EL表达式&JSTL标签库_王振国 - 课堂笔记.pdf

    EL表达式主要用于简化JSP页面中的数据访问,而JSTL(JavaServer Pages Standard Tag Library)标签库则提供了一系列标准的JSP标签,用于实现数据操作、页面流控制、国际化和XML处理等功能。 ### EL表达式...

    JSP的JSTL标签和EL表达式大全

    **JSP的JSTL标签和EL表达式详解** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码来生成动态内容。然而,传统的JSP脚本语法可能导致代码混乱且不易维护。为了解决这个问题...

    EL表达式(转)

    ### EL表达式详解 #### 一、EL表达式概述 EL (Expression Language) 是 JavaServer Pages (JSP) 技术中的一个重要组成部分,用于简化页面上动态内容的处理。EL 表达式允许开发者直接在 JSP 页面中访问 JavaBean ...

    el表达式详细介绍全面内容

    EL表达式支持四种不同的作用范围:Page、Request、Session 和 Application。这些作用范围对应了JSP页面中的不同生命周期和上下文环境: 1. **Page Scope**:只存在于当前页面,当用户离开该页面时数据将被销毁。 2. ...

    EL表达式和Jstl.docx

    ### EL表达式与JSTL标签库详解 #### 一、EL表达式 **1.1 什么是EL表达式** EL(Expression Language)表达式是一种简洁的语法结构,...以上就是关于EL表达式与JSTL标签库的基础知识和使用方法,希望对你有所帮助!

    JSTL和EL表达式源码.rar

    在JSP页面中,使用`<c:forEach>`标签迭代用户列表,通过EL表达式 `${user.name}` 和 `${user.age}` 输出用户的名字和年龄。 **总结** JSTL和EL是Java Web开发中不可或缺的工具,它们提高了代码的可读性和可维护性。...

    EL表达式 jsp

    EL表达式通常被用来获取和设置页面、请求、会话和应用程序范围内的对象属性,以及处理JSP页面中的各种数据。 在Tomcat服务器中,EL表达式默认是启用的,但在某些情况下可能需要手动配置。有以下两种方法来确保...

    el表达式资料全集(里面包含4个文件,超值)

    EL(Expression Language),全称Java...提供的"el表达式资料全集"包含了四个文件,应该是关于EL和JSTL的教程、示例或者练习,这些资源对于学习和巩固这两个主题将非常有帮助。建议仔细研读,通过实例练习来加强理解。

    EL表达式内置的方法

    EL表达式不仅简化了页面中的代码,还提高了开发效率和代码的可读性。 #### 二、EL表达式的配置 EL表达式要在JSP页面中生效,首先需要确保JSP版本为2.0及以上,并且在`<%@ page %>`指令中设置`isELIgnored`属性为`...

    使用EL表达式取集合中的数据

    然而,当涉及到从集合中获取数据时,单纯使用EL表达式是不够的,这时需要结合JSTL(JavaServer Pages Standard Tag Library,标准标签库)来实现。下面我们将详细讲解如何使用EL表达式配合JSTL从不同类型的集合中...

    自定义EL表达式

    自定义EL表达式是Java Web开发中的一个高级技巧,它允许开发者扩展标准的JSP Expression Language(EL)功能,以满足特定项目需求。EL是一种简洁的语法,用于在JSP页面中获取JavaBean属性或者调用Java方法。通过...

    EL表达式的用法 很使用

    - **EL表达式的基本原理**:解释EL表达式是如何工作的。 - **与JSTL标签库的结合使用**:讨论EL表达式与JSTL标签之间的关系及其优势。 - **性能考虑**:探讨EL表达式在高并发环境下的性能表现。 - **最佳实践**:...

    EL表达式函数

    通过以上案例可以看出,利用JSTL中的EL表达式函数,我们可以轻松地在JSP页面中实现复杂的字符串操作,大大提高了开发效率和代码质量。 #### 六、总结 EL表达式及其内建的函数库是JSP开发中不可或缺的强大工具。...

    03_javaWeb知识之:EL表达式

    如果希望在某个特定的JSP页面中禁用EL表达式,可以通过`<%@ page isELIgnored="true" %>`指令来实现。这使得开发者能够在需要时控制EL表达式的使用。 #### 三、EL表达式的运算符 需要注意的是,当EL表达式的值为`...

Global site tag (gtag.js) - Google Analytics