关于jsp页面自定义jstl标签简单项目配置

在做jsp页面的开发过程中,有时对页面传递需要进行简单验证和处理等操作,jstl满足了很多基本的参数处理方法,如下jsp页面引入的jstl标签

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

使用基本的jstl需要引入相应的jar,jstl.jar、standard.jar

我使用的是maven项目,在这里给出pom.xml的配置,如下:

         <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>


但是jstl所提供给我们的方法往往不能够满足我们产品经理的胃口(产品经理总是会提出一些奇葩的问题),有时方法的复用率会很高,用ajax进行请求后台很显然不是一个明智的方法,而且ajax会造成大量的网络访问,会降低系统的性能。在这种情况下,定制自己的jstl标签,就成为我们的不二选择。

在这里简单的介绍一下自定jstl标签的基本步骤,如下:

1、在web.xml中添加相应的配置:

<!-- JSP自定义标签 开始 -->
    <jsp-config>
        <taglib>
            <taglib-uri>/WEB-INF/tld/portal.tld</taglib-uri>
            <taglib-location>/WEB-INF/tld/portal.tld</taglib-location>
        </taglib>
    </jsp-config>
    <!-- JSP自定义标签结束 -->

简单的说明一下这个配置

taglib-uri:表示页面上需要引用的地址,这里以页面引用的uri属性相对应

taglib-location:绑定自定义标签项目中的位置


2、创建自己的tld标签文件,portal.tld  如下:

<?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>portal library</description>  
  <display-name>portal library</display-name>  
  <tlib-version>1.0</tlib-version>  
  <short-name>p</short-name>  
  <uri>http://java.sun.com/jsp/jstl/functions</uri>  

     
      <function>
        <description>
          wipeRepetition去除String中的重复项
        </description>
        <name>wipeRepetition</name>
        <function-class>com.cyz.sjms.function.Functions</function-class>
        <function-signature>java.lang.String wipeRepetition(java.lang.String)</function-signature>
        <example>
          Name: ${p:wipeRepetition(str)}
        </example>  
      </function>

</taglib>


3、创建com.cyz.sjms.function.Functions方法类,这个里面可以自定逻辑,如下:

package com.cyz.sjms.function;

import java.util.Map;

import org.apache.commons.lang3.StringUtils;

import com.google.common.collect.Maps;

public class Functions {
    
    /**
     * 去除List中重复项
     * @param str
     * @return
     */
    public static String wipeRepetition(String str){
        System.err.println("Str"+str);
        if(str == null || "".equals(str) || "null".equals(str)){
            return "";
        }
        String[] s=StringUtils.split(str, "\\\\|");
        //该处使用Set去除重复
        Map<String, String> ss=Maps.newHashMap();
        for (String string : s) {
            ss.put(string,"");
        }
        return StringUtils.join(ss.keySet().toArray(), "、", 0, ss.keySet().size());
    }

}


4、在页面上调用:

引入自定义标签并给个标签符号“p”:<%@ taglib prefix="p" uri="/WEB-INF/tld/portal.tld"%>

调用标签方法:   ${p:wipeRepetition("111|111|22|33") }



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值