编写EL函数

1.建立java类的静态函数

package chapter4;

public class ELFun {
	public static String processStr(String s){
		s = s.replaceAll("<", "&lt");
		s = s.replaceAll(">", "&gt");
		s = s.replaceAll(" ", " ");
		return s;
	}
}

 在WEB-INF目录中建立一个tld目录,然后再目录中建立一个elfun.tld文件

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    <tlib-version>1.0</tlib-version>
    <jsp-version>2.1</jsp-version>
    <description>用于转换特殊字符</description>
    <uri>myelfun</uri>  <!-- 定义URI -->
    <function>
        <name>ps</name>
        <function-class>chapter4.ELFun</function-class>
        <function-signature>
            java.lang.String processStr(java.lang.String)
        </function-signature>
    </function>
</taglib>

修改web.xml文件,添加如下代码

<jsp-config>
      <taglib>
          <taglib-uri>/WEB-INF/tld/elfun.tld</taglib-uri>
          <taglib-location>/WEB-INF/tld/elfun.tld</taglib-location>
      </taglib>
  </jsp-config>

建立一个elfun.jsp文件,需要在声明中导入tld文件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/tld/elfun.tld" prefix="elfun" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  

  <body>
  <input type='text' name='text'/>
    ${elfun:ps("<input type='text' name='text'/>") }
  </body>
</html>

 除了使用tld文件的路径引用tld文件外,还可以使用在tld文件中定义的url引用tld文件

例如:<%@ taglib uri="elfun" prefix="elfun" %>

但为了避免冲突,url在外发布时最好带上域名,例如http://www.sun.com/myelfun

如果使用路径引用tld文件,tld文件可以放到web工程中的任何目录下,并且无需重新服务器即可生效。

如果使用url来引用tld文件,tld文件必须放到web-inf目录中或web-inf目录的子文件中,包括lib和classes目录,且必须重新服务器或重新发布web工程。

posted on 2015-03-25 19:29  颓废的悠然  阅读(187)  评论(0编辑  收藏  举报

导航