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" %>

JavaWeb同步学习笔记之六十二、JavaWeb_EL自定义函数
JavaWeb同步学习笔记之六十二、JavaWeb_EL自定义函数