`

JSP自定义标签扩展----支持EL,访问Spring容器

JSP 
阅读更多

目录:

一、使JSP自定义标签支持EL表达式(${})

二、如果在JSP自定义标签中,须要拿到spring IOC容器管理的bean

 

 

一、使JSP自定义标签支持EL表达式(${})

我写了自定义标签a:rim,想让他的title属性支持${},可是出现了异常.

<%
	String str = "这是EL表达式从 request中取出来的文字!";
	request.setAttribute("str",str);
%>
<a:rim title="${tut}">

要做下面两件事就可以达到目的了:

1  在tld文件如下配置:

 <tag>
      <icon>    
      </icon>
      <name>rim</name>
      <tag-class>com.xui.overall.RimTag</tag-class>
      <body-content>JSP</body-content>
          <attribute>
         <name>title</name>
         <required>false</required>
           <rtexprvalue>true</rtexprvalue>
      </attribute>
   </tag>

 其中关键的是 <rtexprvalue>true</rtexprvalue> ,使title属性可以接受EL表达式.

2  对接收到的EL表达式处理

 title属性的 set get 方法 如下写

private Object    title    = "";
public void setTitle(final Object title) throws JspException
	{
		// 对EL表达式的支持
		this.title = ExpressionEvaluatorManager.evaluate("title", title.toString(), Object.class, this, pageContext);
	}

	public Object getTitle()
	{
		return title;
	}

 这里处理${}的是org.apache.taglibs.standard.lang.support下,有个叫 ExpressionEvaluatorManager类,

 ExpressionEvaluatorManager.evaluate有五个参数。第一个title属性的名字,本例用"title"就行。第二个要求字符串,通常简单调用输入对象的toString方法。第三个是类,通常用Object.class。第四个用this即可,第五个是pageContext变量。

注意:当你的tag属性支持el表达式时,你必须把它声明为Object对象:本例中是 private Object    title    = "标题";

这样工作就做完了,自定义标签就可以处理 ${}了.

 

 

二、如果在JSP自定义标签中,须要拿到spring IOC容器管理的bean可以:

你的JSP自定义标签类可以从org.springframework.web.servlet.tags.RequestContextAwareTag继承,使用
getRequestContext().getWebApplicationContext()可以得到spring的context

 

 

分享到:
评论
3 楼 hackang 2008-12-26  
谢谢,解决了问题
2 楼 anranran 2008-11-13  
你必须把它声明为Object对象:
tomcat6.0下面的JSP不需要把支持EL的属性定为object,不知道你试过没有?
1 楼 d8111 2008-04-27  
很强大..3x

相关推荐

    JSP高级编程---

    EL是JSP 2.0引入的一种轻量级表达式语言,用于简化数据访问。它提供了一种简洁的方式来获取和设置页面作用域内的对象属性。 3. **JSTL(JavaServer Pages Standard Tag Library)**: JSTL是一套标准的JSP标签库...

    jsp-api.jar和servlet-api.jar

    这些接口和类使得开发者能够创建自定义的JSP标签库、定义JSP页面指令、处理JSP表达式语言等。例如,`javax.servlet.jsp.PageContext`提供了对请求、响应、session以及应用程序范围内的对象的访问,而`javax.servlet....

    jsp_api.jar

    1. **JSP标签库(Tag Libraries)**:JSP API定义了一套标准的标签库接口,如JSTL(JavaServer Pages Standard Tag Library),使得开发者可以通过自定义标签扩展JSP的功能。 2. **Servlet接口**:JSP最终会被编译...

    javax.el-api-3.0.0.zip

    5. **EL函数库**:可以定义自定义的函数库,扩展EL的功能。 在Spring Boot项目中,如果使用了外部Tomcat,配置步骤通常包括: 1. **排除内嵌Tomcat**:在`pom.xml`或`build.gradle`文件中,排除Spring Boot默认包含...

    jspapi

    - JSP自定义标签:通过自定义标签库(Tag Libraries)实现,比如JSTL(JavaServer Pages Standard Tag Library)。 - EL(Expression Language)标签:用于访问和操作JavaBean属性,如`${expression}`。 ### 5. JSP...

    servlet-api-2.5.jar以及jsp-api-2.1.jar

    Servlet-API-2.5.jar与JSP-API-2.1.jar是Java Web开发中的核心库文件,主要用于支持Servlet和JSP(JavaServer Pages)技术。这两个JAR包在构建基于Java的Web应用程序时起着至关重要的作用。 Servlet是Java语言编写...

    jsp技术文档

    - EL简化了在JSP页面中访问JavaBean属性的操作,提供了简洁的表达式语法。 - JSTL是一套标准标签库,包括核心标签、XML标签、JDBC标签、函数标签等,可以替代部分自定义标签和脚本代码。 7. **Servlet和JSP的关系...

    JSP编程(绝对经典的jsp编程经验总结)

    - **JSP简化Servlet编程**:通过EL和标签库,使得编写动态网页更简洁。 8. **现代Web框架与JSP** - **Spring MVC**:Spring框架中的MVC模块,广泛应用于企业级开发,提供强大的功能和灵活性。 - **JSF(Java...

    报刊jsp.ppt

    - JSP指令:如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, `&lt;%@ taglib %&gt;`,它们定义页面属性、引入其他文件或注册自定义标签库。 - JSP动作:如`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:param&gt;`等,用于在运行时动态地...

    jsp中文帮助文档大全

    5. **JSP标签库**:支持自定义标签,可以扩展JSP功能,比如Struts2、Spring MVC等框架提供的标签。 6. **Servlet转换**:JSP编译时会被转换成对应的Java Servlet,然后由Web容器执行。 7. **版本更新**:JSP自1999...

    jsp基础速成精华讲解

    - JSP标签库(Tag Libraries):使用自定义或标准的JSTL标签进行功能扩展。 ### 3. JSP生命周期 JSP的生命周期包括三个阶段:翻译、初始化和服务。 - **翻译阶段**:JSP文件被转换为一个Servlet源代码。 - **初始...

    jsp应用开发

    **JSP应用开发** JSP(JavaServer Pages)是Java平台上的一个重要技术,用于构建动态web应用程序。...同时,随着Spring框架和其他现代技术的发展,JSP通常与Spring MVC一起使用,进一步提高了开发效率和应用性能。

    EL调用Java函数(想dwr里那样的调用)

    在Web开发中,EL(Expression Language)是一种用于在JSP页面中访问JavaBean属性和执行简单操作的语言。它简化了视图层与模型层的数据交互。然而,有时我们需要在EL表达式中调用Java方法,这通常是通过自定义EL函数...

    Jsp技术手册

    - **EL**:简化了从JSP页面访问JavaBean和其他对象的值。它是表达式语言,使得在页面上获取和设置数据更简洁。 - **JSTL**:提供了许多预定义的标签,用于常见的任务,如循环、条件判断、XML处理等,以减少脚本使用...

    jsp详细介绍

    - **JSP标记**:包括自定义标签库(Tag Libraries),如JSTL(JavaServer Pages Standard Tag Library),提供标准的控制结构,简化JSP代码。 - **EL(Expression Language)**:用于访问和操作JavaBeans或其他作用...

    servlet/jsp--API

    1. **指令(Directives)**,如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, `&lt;%@ taglib %&gt;`, 它们用于设置页面属性、引入其他文件或注册自定义标签库。 2. **脚本元素(Scriptlets)**,以`&lt;% %&gt;`包裹的Java代码块,通常用于...

    Java开发指南-Servlets和JSP篇

    - **EL(Expression Language)**:EL提供了一种简洁的方式来访问JavaBean或其他作用域内的对象属性,减少JSP中的Java代码量。 - **JSTL(JavaServer Pages Standard Tag Library)**:JSTL是一组标准标签库,提供...

    jsp源码内容管理系统(hibernate3+struts2+spring2)130224

    - **Spring2**:轻量级控制反转(IoC)容器,支持声明式事务管理,简化了Java EE开发复杂度。 #### 1.2 项目特点 - **模块化设计**:通过Spring管理各组件之间的依赖关系,实现松耦合,便于功能扩展与维护。 - **...

Global site tag (gtag.js) - Google Analytics