欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

EL自定义函数

程序员文章站 2022-03-21 14:23:25
...
jstl自带的标签有时候可以满足不了我们的需求,这时我们就要用到自定义函数。。。
新建一个类,定义好所需要的方法。。。
package com.cw.common;

/**
 * 定义EL自定义函数
 * 
 * @author:陈伟
 * @date:2008-5-15
 * 
 */
public class UFunction {

	/**
	 * 获取一个字符串的长度
	 * 
	 * @author 陈伟
	 * @date 2008-5-15
	 * @param str
	 * @return int
	 */
	public static int getLen(String str) {
		return str.length();
	}

	/**
	 * 截取字符串
	 * 
	 * @author 陈伟
	 * @date 2008-5-15
	 * @param str
	 * @param start
	 * @param end
	 * @return String
	 */
	public static String substr(String str, int start, int end) {
		return str.substring(start, end);
	}

	/**
	 * 两数相除获取整数结果
	 * 
	 * @author 陈伟
	 * @date 2008-5-15
	 * @param first
	 * @param second
	 * @return int
	 */
	public static int chufa(int first, int second) {
		return first / second;
	}
}


再建一个tld文件放在WEB-INF目录下面对其进行配置,
<?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">
	<tlib-version>1.0</tlib-version>
	<short-name>len</short-name>
	<function>
		<description>calculate string length</description><!-- 对这个EL方法的描述  -->
		<name>getLen</name><!-- 调用EL方法的名称 -->
		<function-class>com.cw.common.UFunction</function-class>
		<function-signature>
			int getLen(java.lang.String)
		</function-signature>
		<example>${len:getLen(str)}</example><!-- 例如 -->
	</function>

	<function>
		<description>substring</description>
		<name>substr</name>
		<function-class>com.cw.common.UFunction</function-class>
		<function-signature>
			java.lang.String substr(java.lang.String,int,int)
		</function-signature>
	</function>

	<function>
		<description>chufa</description>
		<name>chufa</name>
		<function-class>com.cw.common.UFunction</function-class>
		<function-signature>int chufa(int,int)</function-signature>
	</function>
</taglib>

最后一步就是调用了
<%@ page language="java" pageEncoding="gbk"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="/WEB-INF/mytag.tld" prefix="myTag" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
  	<c:set var="str" value="1111111111111111111111111111"></c:set>
  	字条串"${str}"的长度是${myTag:getLen(str)}<br/>
  	字条串"${str}"截取前5个字符:${myTag:substr(str,0,5)}<br/>
  	5除以3取整数是:${myTag:chufa(5,3) }
  
  </body>
</html>