情景
list.jsp
中要用到StringUtils.isEmpty(String)
方法判断字符串”string”是否为空。可以这样判断:
list.jsp 页面中返回false
<%@ page language="java" pageEncoding="utf-8"%>
<%@page import="packages.util.StringUtils"%>
<html>
<body>
<%=StringUtils.isEmpty("string")%>
</body>
</html>
使用自定义EL函数后还可以这样使用
list.jsp 页面中返回false
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="cfun" uri="http://www.myweb.com/tags/string-functions"%>
<html>
<body>
${cfun:isEmpty("string") }
</body>
</html>
自定义EL函数——说白了是个什么东西
实质就是在xml文件(.tld后缀)中重新定义了java代码,供jsp使用。在xml中需要定义的有:
1. 首先给自身定义个地址(资源),这样jsp才知道用@ taglib从哪里来引入。
2. 登记java代码中的函数,如:{别名:对应的java代码中的函数}
这样jsp中就可以用xml定义中的地址:登记的java函数
来调用了,也就是${cfun:isEmpty("string") }
注意:xml文件(.tld)要放在WEB-INF下,不然tomcat找不到。还可以打包到jar里面(待自测、自验)。
例子
开发环境:tomcat6,jdk1.6
StringUtils.java
package taglib;
public class StringUtils {
public static boolean isEmpty(String str){
if("".equals(str)||str==null) return true;
return false;
}
public int len2(String a){ //非静态方法。试了不能用
return a.length();
}
}
string-functions.tld也就是那个XML文件
<?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>bala bala</description>
<tlib-version>3.0</tlib-version>
<short-name>cfun</short-name><!--和jsp调用时用的prefix没什么关系,就是jsp中的这个:<%@ taglib prefix="cfun" uri="http://www.sishuok.com/tags/string-functions"%>-->
<uri>http://www.myweb.com/tags/string-functions</uri>
<!--叮:首先给自身定义个地址(资源)-->
<!--叮:登记java代码中的函数-->
<function>
<name>isEmpty</name><!--可以起个别名,如isEmp。-->
<function-class>taglib.StringUtils</function-class>
<function-signature>boolean isEmpty(java.lang.String)</function-signature>
</function>
</taglib>
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="cfun" uri="http://www.myweb.com/tags/string-functions"%>
<%@ page isELIgnored="false"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>'tag-tld'</title>
<base href="<%=basePath%>">
</head>
<body>
${cfun:isEmpty("abcd") }
</body>
</html>
jsp中用地址:登记的java函数
调用,就是那么个意思吧。