JavaWeb同步学习笔记之六十二、JavaWeb_EL自定义函数
JavaWeb_EL自定义函数
EL自定义函数
- 1.EL自定义函数
1)在 EL 表达式中调用的某个 Java 类的静态方法,这个静态方法需在 web 应用程序中进行配置才可以被 EL 表达式调用。
2)EL 自定义函数可以扩展 EL 表达式的功能,让 EL 表达式完成普通 Java 程序代码所能完成的功能。 - 2.EL 自定义函数开发步骤
1)编写 EL 自定义函数映射的Java 类中的静态方法:这个 Java 类必须带有 public 修饰符,方法必须是这个类的带有 public 修饰符的静态方法。
2)编写标签库描述文件(tld 文件),在 tld 文件中描述自定义函数。
3)在 JSP 页面中导入和使用自定义函数。 - 3.在 tld 文件中描述 EL 自定义函数
1)为了能够让一个 Java 类的静态方法可以被 EL 表达式调用,需要在一个标签库描述文件(tld 文件)中对 EL 自定义函数进行描述,以将 Java 类中的静态方法映射成一个 EL 自定义函数。 - 4.示例
mytag.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>MyTag 1.2 core library</description>
<display-name>MyTag core</display-name>
<tlib-version>1.2</tlib-version>
<short-name>xs</short-name>
<uri>http://xs.com/jsp/MyTag/core</uri>
<!-- 描述EL的自定义函数 -->
<function>
<name>concat</name>
<function-class>com.xs.javaweb.MyELFunction</function-class>
<function-signature>java.lang.String concat(java.lang.String, java.lang.String)</function-signature>
</function>
</taglib>
MyELFunction.java
/**
* All rights Reserved,Designed By XS
* @Title: MyELFunction.java
* @Package com.xs.javaweb
* @Description: TODO
* @author: XS
* @date: 2019年3月14日 下午4:47:41
* @version V1.0
*/
package com.xs.javaweb;
/**
* @ClassName: MyELFunction
* @Description: TODO
* @author: XS
* @date: 2019年3月14日 下午4:47:41
* @version V1.0
*/
public class MyELFunction {
public static String concat(String str1, String str2) {
return str1 + str2;
}
}
test.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.xs.javaweb.Customer"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<%@ taglib prefix="xs" uri="http://xs.com/jsp/MyTag/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 使用一个EL的自定义函数 -->
${fn:length(param.name)}
<br>
<br>
<!-- 测试自定义的EL函数 -->
${xs:concat(param.name1, param.name2)}
</body>
</html>
- 5.jstl fn 函数
1)为了简化在 JSP 页面操作字符串,JSTL 中提供了一套 EL 自定义函数,这些自定义函数包含了 JSP 页面制经常要用到的字符串操作
2)在JSTL的表达是中要使用一个函数,其格式如下:
${ns:methodName(args....)}
3)在使用这些函数之前必须在JSP中引入标准函数的声明
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>