JSP的自定义标签(四)之定义函数

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="color:#ffffff;"></span></span><p>
</p>

前面我们学习了标签的相关知识,现在笔者将向大家介绍如何将自定义标签与表达式语言一起用,而这里的用法会更难一点,那就是要用标签定义函数,并在JSP的页面中用表达式语言调用。

1. 开发函数处理类

       函数处理类就是普通类,这个普通类中包含若干个静态方法,每上静态方法都可以定义成一个函数。下面我们定义一个类Functions.java,并将它放在com.linjw.function中。

public class Functions
{
	// 对字符串进行反转
	public static String reverse( String text )
	{
		return new StringBuffer( text ).reverse().toString();
	}
	// 统计字符串的个数
	public static int countChar( String text )
	{
		return text.length();
	}
}

2. 使用标签库定义函数

定义函数的方法与定义标签的方法大致相似,不过这里要说明三个子元素:

(1).        name:指定自定义函数的函数名

(2).        function-class:指定自定义函数的处理类

(3).        function-signature:指定自定义函数对应的方法

<?xml version="1.0" encoding="GBK"?>
<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">
	<tlib-version>1.0</tlib-version>
	<short-name>owen</short-name>
	<!-- 定义该标签库的URI -->
	<uri>http://www.linjw.taglib/tags</uri>
	<!-- 定义第一个函数 -->
	<function>
		<!-- 定义函数名:reverse -->
		<name>reverse</name>
		<!-- 定义函数的处理类 -->
		<function-class>com.linjw.function.Functions</function-class>
		<!-- 定义函数的实现方法-->
		<function-signature>
			java.lang.String reverse(java.lang.String)</function-signature>
	</function>
	<!-- 定义第二个函数: countChar -->
	<function>
		<!-- 定义函数名:countChar -->
		<name>countChar</name>
		<!-- 定义函数的处理类 -->
		<function-class>lee.Functions</function-class>
		<!-- 定义函数的实现方法-->
		<function-signature>int countChar(java.lang.String)
			</function-signature>
	</function>
</taglib>

3. JSP页面的EL中使用

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@ taglib prefix="crazyit" uri="http://www.crazyit.org/tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title> new document </title>
	<meta name="website" content="http://www.linjw.org" />
</head>
<body>
	<h2>表达式语言 - 自定义函数</h2><hr/>
	请输入一个字符串:
	<form action="useFunctions.jsp" method="post">
		字符串 = <input type="text" name="name" value="${param['name']}">
		<input type="submit"  value="提交">
	</form>
	<table border="1" bgcolor="aaaadd">
		<tr>
		<td><b>表达式语言</b></td>
		<td><b>计算结果</b></td>
		<tr>
		<tr>
			<td>\${param["name"]}</td>
			<td>${param["name"]} </td>
		</tr>
		<!--  使用reverse函数-->
		<tr>
			<td>\${owen:reverse(param["name"])}</td>
			<td>${owen:reverse(param["name"])} </td>
		</tr>
		<tr>
			<td>\${owen:reverse(crazyit:reverse(param["name"]))}</td>
			<td>${owen:reverse(crazyit:reverse(param["name"]))} </td>
		</tr>
		<!-- 使用countChar函数 -->
		<tr>
			<td>\${owen:countChar(param["name"])}</td>
			<td>${owen:countChar(param["name"])} </td>
		</tr>
	</table>
</body>
</html>

4.  总结

    自定义函数的实质就是指定Java类的静态方法暴露成可以在EL中使用的函数,所以可以定义成函数的方法必须用public static修饰。






  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

Owen William

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值