[JSP]自定义EL函数以及使用
2024-08-27 04:51:28
有时候在JSP页面需要进行一连串的字符串的处理,需要进行自定义EL函数。
先看EL函数的tld文件:
standard.jar下面:
自定义EL函数:
1.编写EL函数(全是public static修饰)
下面这个函数是将一个字符串按后面的格式进行替换
package cn.xm.exam.MyElFunction; /**
* 自定义EL函数,方便在JSP中处理一些复杂的字符串替换函数
*
* @author QiaoLiQiang
* @time 2017年10月29日下午9:09:47
*/
public class MyElFunction {
/**
* 将source字符串按照s1-s2替换,例如:s1:1234,s2:ABCD则为将source中1换为A,2换为B```
*
* @param source
* 需要被替换的字符串
* @param s1
* 替换前:1 2 3 4 5
* @param s2
* 替换后:A B C D E
* @return
*/
public static String replace(String source, String s1, String s2) {
for (int i = 0, length_1 = s1.length(); i < length_1; i++) {
source = source.replace(s1.charAt(i), s2.charAt(i));
}
return source;
}
}
2.编写tld文件进行描述(tld文件放在WEB-INF目录下,对刚才编写的函数进行描述,头尾可以参考standard.jar/META-INF/fn.tld)
tld文件加唯一的uri(便于在JSP中引入这个uri)
<?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>JSTL 1.1 functions library</description>
<display-name>JSTL functions</display-name>
<tlib-version>1.1</tlib-version>
<short-name>MyElFunction</short-name>
<uri>/myfunction</uri> <function>
<description>
将第一个参数中的1234,替换为ABCD
</description>
<name>replace</name>
<function-class>cn.xm.exam.MyElFunction.MyElFunction</function-class>
<function-signature>String replace(java.lang.String, java.lang.String,
java.lang.String)
</function-signature>
<example>
${replace("126352","1234","ABCD")}
</example>
</function> </taglib>
3.JSP中使用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/myfunction" prefix="my"%>
<!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>${my:replace("12345","1234","ABCD") }
</body>
</html>
结果:
4.JSP中结合EL函数进行使用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/myfunction" prefix="my"%>
<!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>
<%
request.setAttribute("test", "132");
%>
</head>
<body>${my:replace(test,"1234","ABCD") }
</body>
</html>
结果:
ACB
解析:上述自定义的函数从域中取出test,然后对test进行替换
最新文章
- CSS3边框图片属性---border-image
- NGUI悬浮菜单思路实践
- JavaScript的检测属性、属性特性、枚举属性
- 微软职位内部推荐-Senior Software Engineer -Web
- scanf()函数用法小结
- 深刻理解C#的传值调用和传引用调用
- HW2.22
- AE 线编辑
- phpmyadmin密码字段加密方法
- (转)WCF中调用WebService出错,大家帮忙看看,回答就有分
- 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏
- Python实战之int学习笔记及简单练习
- java之内存分布图
- 斯坦福大学公开课机器学习:advice for applying machine learning - deciding what to try next(设计机器学习系统时,怎样确定最适合、最正确的方法)
- Linux用户登录记录日志和相关查看命令汇总(转)
- Python基础教程(第3版) 笔记(二)
- Mysql跨表更新
- AngularJS 事件广播与接收 $broadcast,$emit,$on 作用域间通信 封装factory服务 发布订阅
- 【对比分析五】CSS阻塞和JS阻塞
- Python初学者第十五天 文件处理3