定义和使用EL函数
EL为表达式语言,在EL中,允许定义和使用函数。下面将介绍如何定义和使用EL的函数。
1. 定义和使用函数
函数的定义和使用分为以下3个步骤:
(1)编写一个Java类,并在该类中编写公用的静态方法,用于实现自定义EL函数的具体功能。
(2)编写标签库描述文件,对函数进行声明。该文件的扩展名为.tld,被保存到Web应用的WEB-INF文件夹下。
(3)在JSP页面中引用标签库,并调用定义的EL函数,实现相应的功能。
下面通过一个具体的实例介绍EL函数的定义和使用。
例1.1 定义EL函数处理字符串中的回车换行和空白符。
(1)编写一个Java类,名称为StringDeal,将其保存在com.el包中,在该类中添加一个公用的静态方法shiftEnter(),在该方法中替换输入字符串中的回车换行符<br>,空格符为 ;,最后返回新替换后的字符串。StringDeal类的完整代码如下:
package com.el; public class StringDeal {
public static String shiftEnter(String str){ //定义公用的静态方法
String newStr = str.replaceAll("\r\n", "<br>"); //替换回车换行符
newStr = str.replaceAll(" ", " "); //替换空格符
return newStr;
}
}
(2)编写标签库描述文件,名称为stringDeal.tld,并将其保存到WEB-INF文件夹下。关键代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" 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">
<tlib-version>1.0</tlib-version>
<short-name>stringDeal TLD</short-name>
<uri>/stringDeal</uri>
<function>
<name>shiftEnter</name>
<function-class>com.el.StringDeal</function-class>
<function-signature>java.lang.String shiftEnter(java.lang.String)</function-signature>
</function>
</taglib>
参数说明:
<uri>标记:用于指定tld文件的映射路径。在应用EL函数时,需要使用该标记指定的内容。
<name>标记:用于指定EL函数说对应方法的方法名,通常与Java文件中方法名相同。
<function-class>标记:用于指定EL函数所对应的Java文件,这里需要包括包名和类名,例如,上面的的代码中,包名为com.el,类名为StringDeal。
<function-signature>标记:用于指定EL函数所对应的静态方法,这里包括返回值的类型和入口参数的类型。在指定这些类型时,需要使用完整的类型名。
(3)编写index.jsp文件,在该文件中添加一个表单及表单元素,用于收集内容信息。关键代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="form1" method="post" action="deal.jsp">
<textarea name="content" cols="30" rows="5"></textarea>
<br>
<input type="submit" name="Button" value="提交">
</form>
</body>
</html>
(4)编写表单的处理页deal.jsp文件,在该文件中应用上面定义的EL函数,对获取到的内容信息进行处理(主要是替换字符串中的回车换行符和空格符)后显示到页面中。deal.jsp文件的具体代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="wghfn" uri="/stringDeal" %>
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示结果</title>
</head>
<body>
内容为:<br>
${wghfn:shiftEnter(param.content)}
</body>
</html>
说明:在引用标签库时,指定的uri属性与标签库描述文件中的<uri>标记的值时相对应的。
程序运行结果如下所示:
最新文章
- WriteLog
- Kettle使用介绍
- Python全栈之路-----基础篇
- php基础22:上传并且保存文件
- tinyxml安装和使用
- jdk 1.5
- Squares<;哈希>;
- 【HTML+CSS】浅谈:相对定位与绝对定位
- 简单的web三层架构系统【第五版】
- 在 Windows 上测试 Redis Cluster的集群填坑笔记
- MyEclipse10的正确破解方法
- 冒烟测试与BVT测试
- ibatis项目应用
- xtrabackup部署以及使用
- 将大数组里面的小数组平行展开的实现(Making a flat list out of list of lists in Python)
- PHP中get请求中参数的key不能是para
- JavaSE学习总结(五)——封装,继承,多态很简单
- Swing使用Substance外观包异常问题
- java BufferedReader 与 BufferedWriter
- unzip
热门文章
- 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) B - Enlarging Enthusiasm dp好题
- JavaScript中正则的使用(1)
- ODBC在注册表中的位置
- 《Android源码设计模式》--状态模式--责任链模式--解释器模式--命令模式--观察者模式--备忘录模式--迭代器模式
- Logstash 本地安装plugin
- PHP编程基础学习(一)——数据类型
- spring boot thymeleaf常用方式
- 让Xcode8.0支持iOS11.2设备真机测试
- matlab绘制心形函数
- BZOJ2111 ZJOI2010排列计数