`
cxshun
  • 浏览: 724543 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

自定义标签之EL函数

 
阅读更多

前几天写了篇博客回顾了一下自定义标签的,这次也来重新回顾一下自定义EL函数。很多时候我们使用JSTL的同时都会使用EL表达式,而EL表达式中又有一系列的函数,比如function中的formatDate这些的,我们用得比较多的。那我们如何来自定义一个我们自己的方法,让它作为一个EL函数呢,这就是我们这次要一起来看看的东西了。

废话不多说,直接进入正题。

自定义EL函数同样也和自定义JSTL标签一样,有个基本的流程,如下:

1)定义一个类,把需要的方法写上(注意这里需要作为EL函数调用的方法必须是静态的static)。

2)标签定义文件tld

3)web.xml配置

4)JSP页面引用

基本上跟上次我们说的自定义JSTL标签一致,只是第一步不一样而已。JSTL中是继承那几个TagSupport的类,而这里不用继承,随便即可。

 

下面开始我们的代码了。

1)定义一个处理类:

package com.shun.customel;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatter {
	public static String formatDate(Date date,String pattern){
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(date);
	}
}

  这个方法很简单,只是通过指定的格式格式化一下日期而已。

2)定义tld文件,这个文件与之前的JSTL标签文件有点不一样:

<?xml version="1.0" encoding="UTF-8" ?>
 
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <description>A tag library exercising SimpleTag handlers.</description>
    <tlib-version>1.0</tlib-version>
    
    <uri>http://shun.com/myElFuns</uri>
    
    <function>
    	<name>formatDate</name>
    	<function-class>com.shun.customel.DateFormatter</function-class>
    	<function-signature>java.lang.String formatDate(java.util.Date,java.lang.String)</function-signature>
    </function>
    
</taglib>

  我们这里只定义了一下函数,

name是函数的名称,是我们在JSP页面上调用的函数名;

function-class是处理这个函数的类,必须要写完全的包名;

而function-signature就是函数签名了,这里注意,除了基本类型(int,char等,String除外)外,都必须写完全的类名,包括包名,参数也一样。

当然,一个文件可以定义很多个函数,当有多个函数需要定义时,写多个function即可。

 

3)写完了标签定义文件,接下来当然就是web.xml了。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    
  <jsp-config>
  	<taglib>
  		<taglib-uri>http://shun.com/myElFuns</taglib-uri>
  		<taglib-location>/META-INF/elFuns.tld</taglib-location>
  	</taglib>
  </jsp-config>
</web-app>

  这里跟我们上次说的一样,taglib-uri必须和之前在tld文件中定义的uri一样,而taglib-location指定了tld文件的位置。

4)前面三步做完,我们的EL自定义函数已经完成了,接下来就是使用了。但在这之前,由于我们在formatDate中需要一个Date类型的变量,而且我们的EL表达式中无法用JSP脚本,这时怎么办呢?当然,我们可以把这个参数设到request里面去。如下JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib uri="http://shun.com/myElFuns" prefix="myElFuns"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%request.setAttribute("date", new Date()); %>
	FormatDate:${myElFuns:formatDate(date,"yyyy-MM-dd") }
</body>
</html>

  我们直接在页面上设值。

 

当然,我们认为这样在页面写JSP脚本不大美观的话,可以通过servlet来设值,然后直接取出,servlet中还是只是一句代码:

request.setAttribute("date", new Date()); 

  然后直接进行转发即可。

 

EL表达式对于有参数的处理相对JSTL标签来说要简单得多。但JSTL标签可以带EL表达作为属性的值,或者JSP脚本,这些是EL表达式无法做到的。这些都需要我们在项目中进行权衡。

好了,自定义标签就到这里。

0
0
分享到:
评论

相关推荐

    jsp2.0 自定义标签和自定标签函数

    自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL(Expression Language)函数一样使用自定义功能。这些函数通常封装了一些简单但常用的操作,比如字符串处理、日期转换等。 1. **创建自定义...

    java自定义标签、自定义函数、taglib

    在Java Web开发中,自定义标签(Custom Tags)和自定义函数(Custom Functions)是提高代码复用性和可维护性的重要手段。它们是JSP(JavaServer Pages)标准标签库(JSTL)的一种扩展,允许开发者创建符合特定业务...

    自定义EL函数

    在“源码”和“工具”的标签中,可能涉及到如何查看和分析`FunctionMapper`的源代码,以及如何在不同的开发工具中使用和调试自定义EL函数。这可能包括IDE的设置,如Eclipse或IntelliJ IDEA中的配置,以及如何通过...

    EL自定义函数引用

    TLD文件是用来定义标签库的XML文件,对于EL自定义函数来说,则是定义函数的信息。在TLD文件中,需要明确函数的描述、名称、类路径、函数签名等关键信息。这一步是将Java类中的方法与EL语法关联起来的重要步骤。 **...

    自定义标签和自定义jstl函数的具体项目实现

    在Java Web开发中,自定义标签和自定义JSTL(JavaServer Pages Standard Tag Library)函数是提升代码可复用性和可维护性的重要工具。它们允许开发者创建自己的语义化标签,以替代复杂的Java脚本或者JSP标签,使得...

    JSTL 开发自定义标签使用的jar

    3. **在JSP页面中使用自定义标签**:在JSP页面中,你可以通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,并用`&lt;mytag:tagname&gt;`的形式调用自定义标签。 4. **配置Web应用**:确保web.xml文件中配置了对JSTL的支持,包括...

    jstl自定义标签和函数思维导图

    jstl自定义标签和函数思维导图

    EL自定义标签【步骤图解和工程示例】

    然而,EL默认提供的操作符和函数可能无法满足所有需求,此时自定义标签就派上用场了。 **步骤一:创建自定义标签库** 1. 定义一个XML文件,如`myTags.tld`,声明自定义标签库的元数据,包括标签名称、类路径等。 2....

    自定义标签库

    - **EL表达式支持**:自定义标签可以接受EL(Expression Language)表达式作为属性值,增加灵活性。 - **国际化支持**:通过TLD中的`msgBundle`属性,可以为标签库添加国际化支持。 6. **自定义标签与JSTL的区别*...

    JSTL自定义EL表达式

    4. 在JSP页面中使用:在JSP页面中,你可以像使用内置EL函数一样,通过`my:myFunction`这种形式调用你的自定义函数,其中`my`是函数库的前缀,`myFunction`是函数名。 举例来说,假设我们有一个自定义函数库,名为`...

    jsp自定义标签库注意事项

    【jsp自定义标签库注意事项】 在Java服务器页面(JSP)开发中,自定义标签库是一种强大的工具,它能够帮助开发者创建可重用的代码片段,提高代码的可读性和可维护性。以下是对JSP自定义标签库的详细解释和使用注意...

    EL自定义函数

    “源码”标签暗示这篇博客可能深入讲解了自定义EL函数的实现代码,包括如何编写`FunctionMapper`实现类,以及如何在项目中引入和配置。对于学习和理解EL的底层工作原理,查看和理解源码是非常有价值的。 “工具”...

    从JSTL和STRUTS的TLD文件到自定义EL函数

    但在某些情况下,比如使用自定义标签或特定版本的JSTL时,可能需要在`web.xml`中进行显式的配置: ```xml &lt;taglib-uri&gt;http://java.sun.com/jstl/fmt&lt;/taglib-uri&gt; &lt;taglib-location&gt;/WEB-INF/fmt.tld ``` - `...

    自定义标签实例

    自定义标签可以看作是JSP中的用户自定义函数,它们封装了复杂的逻辑或者视图展示,使得页面更易于管理和扩展。在这个实例中,我们将深入探讨如何创建、使用以及理解自定义标签。 首先,自定义标签的创建过程通常...

    自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串

    做过大型网站前台的Web开发程序员最头疼的事情就是前台首页的布局,这其中最最头疼的就是标题字符的截取的问题,虽然有fn:substring,但表现率...在我们老大的指点下,了解了如何自定义EL函数,哈哈,今天实现了它。

    jstl自定义标签

    4. `&lt;tag&gt;`:用于定义每个自定义标签,包含标签的名字、类(对应Java函数)、属性定义等。 5. `&lt;attribute&gt;`:定义标签的属性,包括属性名称、类型、是否必需、默认值等。 **自定义标签实现**: `MyFunctions.java`...

    如何操作cookie,分页标签

    在这个话题中,我们将深入探讨如何操作Cookie,自定义标签,以及如何定义EL(Expression Language)内部函数,特别关注如何创建一个自定义分页标签。 首先,让我们了解如何操作Cookie。在Java中,我们可以使用`...

    在JSP页面用EL表达式调用一些函数

    自定义标签可以包装Java方法,EL表达式则调用这些标签,这样既保持了页面的清晰,又实现了业务需求。 总的来说,EL表达式在JSP页面中的使用极大地提升了开发效率和代码质量,减少了不必要的脚本代码,使JSP页面更加...

Global site tag (gtag.js) - Google Analytics