表达式语言的自定义函数
EL本身只是一种数据访问语言,因此不支持调用方法。如果要进行更复杂的处理,可以通过函数来完成。函数的本质是:提供一种语法允许在EL中调用某个类的静态方法
。
要在EL中使用函数的话,主要步骤分为3步:
开发函数处理类:就是一个普通的java类,但需要包含静态方法
使用标签库定义函数
在JSP页面的EL中使用函数,先导入标签库,然后再使用
使用示例如下所示:
定义普通的包含静态方法的java类:
public class StringFunction {
public static String reverse(String text){
return new StringBuffer(text).reverse().toString();
}
}
在标签库中进行配置
reverse
com.zuobiao.zhang.ELFunction.StringFunction
java.lang.String reverse(java.lang.String)
在JSP中使用:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="mytag" uri="http://com.zuobiao.zhang/mytaglib" %>
EL表达式中函数的使用
${mytag:reverse("hello world")}
Tag File支持
Tag File是对自定义标签的简化。以前我们自定义标签时要声明标签处理类,在tld文件中配置,然后再再JSP页面中使用。如果使用了Tag File,那么就不需要定义标签处理类和tld文件了,只需要在JSP页面中直接引用tag文件就可以了。Tag File具有以下5个编译指令:
taglib:用于导入其他标签库
include:用与导入其他JSP或者静态页面
tag:类似于JSP文件中的page指令
attribute:用于设置自定义标签的属性
variable:用于设置自定义标签的变量,这些变量将传给JSP页面使用
下边给出示例,首先定义tag文件,如下所示:
<%@tag pageEncoding="UTF-8" import="java.util.List" %>
<%--给标签定义属性--%>
<%@attribute name="bgColor"%>
<%@attribute name="cellColor"%>
<%@attribute name="title"%>
${title}
list = (List)request.getAttribute("a");
for (String item : list){%>
Tag File的命名必须遵守如下规则:tagName.tag,即Tag File的主文件名就是标签名,后缀名必须是tag
,将该文件放到WEB-INF/tags目录下
在JSP中使用tag file,示例如下所示:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="tags" tagdir="/WEB-INF/tags" %>
tag file的使用
<%
List a = new ArrayList<>();
a.add("1111");
a.add("2222");
a.add("3333");
request.setAttribute("a",a);
%>
下一节咱们探讨下Servlet3.0的新特性
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!