JSTL自定义函数,配合c标签使用

15 篇文章 0 订阅

   我们在使用jstl标签的时候,有的时候c标签和jstl标签提供的函数无法满足需求,就需要我们自定义一些JSTL函数,比如我想实现根据数据库保存的用户的状态标志(1或者0),展示到页面是“启用”或者“禁用”的文字。这里我们用自定义函数来实现。

实现分成以下几部:

1、  编写Java类,实现自定义函数的功能要求;

    要求所有的方法必须为static方法。

2、  编写tld文件;

     需要将tld文件放到WEB-INF目录或子目录下;

3、  配置web.xml文件,注册tld标签;

4、  jsp页面使用JSTL自定义函数;


详细步骤讲解:

1、  编写Java类,实现自定义函数的功能要求:

    此Java类的getDisabled(int)实现了根据用户的标志位判断用户的状态是启用或禁用状态。

[java]  view plain  copy
  1. package com.yimian.springdemo.utils;  
  2.   
  3. import com.yimian.springdemo.utils.enums.EnumDISABLED;  
  4.   
  5. /** 
  6.  * 自定义JSTL函数    
  7.  * @author dell 
  8.  */  
  9. public class JSTLUtils {  
  10.       
  11.     /** 
  12.      * 启用/禁用 的状态 
  13.      * @param disabled 
  14.      * @return 
  15.      */  
  16.     public static String getDisabled(int disabled){  
  17.         if(disabled==EnumDISABLED.YES.getKey()){  
  18.             return EnumDISABLED.YES.getValue();  
  19.         }else if(disabled==EnumDISABLED.NO.getKey()){  
  20.             return EnumDISABLED.NO.getValue();  
  21.         }else{  
  22.             return "";  
  23.         }  
  24.     }  
  25. }  

[java]  view plain  copy
  1. package com.yimian.springdemo.utils.enums;  
  2.   
  3. /** 
  4.  * 启用/禁用 
  5.  * @author dell 
  6.  * 
  7.  */  
  8. public enum EnumDISABLED {  
  9.       
  10.     YES(1,"启用"),NO(0,"禁用");  
  11.       
  12.     private final int key;  
  13.     private final String value;  
  14.       
  15.     EnumDISABLED(int key,String value){  
  16.         this.key = key;  
  17.         this.value = value;  
  18.     }  
  19.       
  20.     public int getKey(){  
  21.         return this.key;  
  22.     }  
  23.   
  24.     public String getValue(){  
  25.         return this.value;  
  26.     }  
  27. }  


2、   编写tld文件:

    注意事项:

    short-name : 没有什么意义

    uri : 自定义,与jsp页面引用自定义标签的时候uri地址是一样的,例如:

    <%@ taglib prefix="fns" uri="http://fns.com"%>

 

    function部分定义的是函数部分:

    name : 自定义,没有什么具体含义

    function-class : 实现方法的Java类

    function-signature : 注册的具体方法,格式如 

       返回值类型 方法名(参数)      java.lang.String getDisabled(int)

       注意事项:如果参数是int,可以直接使用,如果是StringInteger等对象类型,需要使用java.lang.Stringjava.lang.Integer等方式。

    example : 使用例子参考,可以不写


fns.tld :

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  5.         http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
  6.     version="2.0">  
  7.       
  8.     <tlib-version>1.0</tlib-version>  
  9.     <short-name>fnseeeee</short-name>  
  10.     <uri>http://fns.com</uri>  
  11.        
  12.     <function>  
  13.         <name>getDisabled</name>  
  14.         <function-class>com.yimian.springdemo.utils.JSTLUtils</function-class>  
  15.         <function-signature>java.lang.String getDisabled(int)</function-signature>  
  16.         <example>${fns:getDisabled(key)}</example>  
  17.     </function>  
  18. </taglib>  

3、  配置web.xml文件,注册tld标签:

        taglib-uri : 与tld文件中的uri名称一致

        taglib-location: tld文件的位置,需要将tld文件放到WEB-INF文件夹或子文件夹下

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  5.   
  6.     <!-- 加载web容器的时候,加载的配置文件的信息 -->  
  7.     <context-param>  
  8.         <param-name>contextConfigLocation</param-name>  
  9.         <param-value>/WEB-INF/spring/spring-context.xml,/WEB-INF/spring/mybatis-context.xml</param-value>  
  10.     </context-param>  
  11.   
  12.     <!-- 加载web容器启动的时候,自动加载ApplicationContext中的配置信息 -->  
  13.     <listener>  
  14.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  15.     </listener>  
  16.   
  17.     <!-- DispatcherServlet -->  
  18.     <servlet>  
  19.         <servlet-name>appServlet</servlet-name>  
  20.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  21.         <init-param>  
  22.             <param-name>contextConfigLocation</param-name>  
  23.             <param-value>/WEB-INF/spring/servlet-context.xml</param-value>  
  24.         </init-param>  
  25.         <load-on-startup>1</load-on-startup>  
  26.     </servlet>  
  27.   
  28.     <servlet-mapping>  
  29.         <servlet-name>appServlet</servlet-name>  
  30.         <url-pattern>/</url-pattern>  
  31.     </servlet-mapping>  
  32.   
  33.     <!-- 注册JSTL函数 -->  
  34.     <jsp-config>  
  35.         <taglib>  
  36.             <taglib-uri>http://fns.com</taglib-uri>  
  37.             <taglib-location>/WEB-INF/fns.tld</taglib-location>  
  38.         </taglib>  
  39.     </jsp-config>  
  40. </web-app>  

4、  jsp页面使用JSTL自定义函数:

    引入JSTL标签,注意这里是根据uri地址来找到具体的tld文件的,需要和web.xml中一致。

    <!-- 导入自定义jstl函数 -->  

    <%@ taglib prefix="fns" uri="http://fns.com" %>

 

    页面引用自定义函数的具体形式如下:

    <td>${fns:getDisabled(po.disabled)}</td>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值