zoukankan      html  css  js  c++  java
  • 自定义el函数

         对于el表达式大家都很熟悉,可是对于el函数,大家可能就不是很熟悉了,其实一些el函数的使用可以方便我们的开发,比如我们想要将一个数据变成大写,就可以调用sun公司给我们提供的el函数,然后直接在页面写成${fn:toUpperCase('string') }。如果要去掉空格的话,我们直接这样写${fn:trim('  ssf     ') }就可以了。但是,在实际的开发中,在一些特殊的应用场景,sun公司提供给我们的一些el函数已经不能满足我们的需求时,我们就必须自己定义一些自己的el函数,所以下面我们就来介绍自定义el函数的方法和步骤。

    1.你要使用el表达式,那么你就必须导入el表达式相关的jar包:jstl.jar  和 standard.jar 两个jar包,因为maven实在太方便了,所以我们这里采用了maven导入的方式。

    <dependency>
        <groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-impl</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>javax.servlet.jsp.jstl-api</artifactId>
        <version>1.2.1</version>
    </dependency>

    2.接下来新建一个类并在里面编写一个静态的方法,(该方法必须时静态的)

    package com.el.servlet;
    
    /**
     * 自定以el函数
     * 该类中的函数filter主要时用来将html中的标签在页面原样输出,比如<a href="www.baidu.com">百度</a>,如果不做
    *转义处理,那么输出的话,只有"百度"两个字,如果做了转义,那么就会原样输出<a href="www.baidu.com">百度</a>
    */ public class HtmlFilter { // el函数必须是静态的,并且在tld文件中描述一下,放在WEB-INF目录下面 public static String filter(String message) { if (message == null) return (null); char content[] = new char[message.length()]; message.getChars(0, message.length(), content, 0); StringBuilder result = new StringBuilder(content.length + 50); for (int i = 0; i < content.length; i++) { switch (content[i]) { case '<': result.append("&lt;"); break; case '>': result.append("&gt;"); break; case '&': result.append("&amp;"); break; case '"': result.append("&quot;"); break; default: result.append(content[i]); } } return (result.toString()); } }

    3.el函数调用java类的静态方法已经写好了,接下来,我们需要在WEB-INF文件下面(WEB-INF子目录也可以)新建一个tld文件,这里文件名是my.tld,如下所示

    <?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 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>
        <short-name>SimpleTagLibrary</short-name>
        <uri>/my</uri>
        <!-- 函数配置 -->
        <function>
            <!-- 描述信息 -->
            <description>Converts the string to all caps</description>
            <!-- 调用的时用的名称,一般函数名称保持一致 -->
            <name>filter</name>
            <!-- 函数所在类的全类名 -->
            <function-class>com.el.servlet.HtmlFilter</function-class>
            <!-- 方法名称 -->
            <function-signature>java.lang.String filter( java.lang.String )</function-signature>
        </function>
    </taglib>

    4.到这里的话,我们已经把我们的自定义el函数已经编写好了,接下来就可以在jsp页面中去使用了

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%--导入自定义el函数的标签库 --%>
    <%@ taglib uri="/my" prefix="my"%>
    <!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>自定义el函数</title>
    </head>
    <body>
        ${my:filter("<a href='www.baidu.com'>百度</a>") } <br/><%--在页面上看到是原样:<a href='www.baidu.com'>百度</a>  --%>
        <a href="www.baidu.com">百度</a> <%--在页面上看到的是: 百度,<a>等html标签被html页面解析了 --%>
    </body>
    </html>

    至此,一个简单的自定义el函数已经说明完了,有不足的地方,希望大家多多提意见!

  • 相关阅读:
    poj 2584 T-Shirt Gumbo (二分匹配)
    hdu 1757 A Simple Math Problem (乘法矩阵)
    矩阵之矩阵乘法(转载)
    poj 2239 Selecting Courses (二分匹配)
    hdu 3661 Assignments (贪心)
    hdu 1348 Wall (凸包)
    poj 2060 Taxi Cab Scheme (二分匹配)
    hdu 2202 最大三角形 (凸包)
    hdu 1577 WisKey的眼神 (数学几何)
    poj 1719 Shooting Contest (二分匹配)
  • 原文地址:https://www.cnblogs.com/nanyangke-cjz/p/7156557.html
Copyright © 2011-2022 走看看