JSP自定义1-自定义EL函数

情景

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>

list.jsp

<%@ 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函数调用,就是那么个意思吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值