自定义jsp标签字符串是否属于数组字符串

原创
2019/04/28 22:15
阅读数 56

前段时间用到了jsp页面判断一个字符串是否属于一个数组、找了许久也没找到这个标签,经过各种折磨后自己自定义了一个标签类,希望给需要的朋友一些借鉴

第一步

 在WEB-INF文件夹下新建一个tld文件,内容如下

<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>JSTL 1.1 functions library</description>
  <display-name>JSTL functions</display-name>
  <tlib-version>1.0</tlib-version>
  <short-name>mcTagLibrary</short-name>
  <uri>/mc</uri>     
  <function>
    <description>
      Tests if an input string eques the specified substring.
    </description>
    <name>equals</name>
    <function-class>com.cn.zx.common.Mction</function-class>
    <function-signature>boolean equals(java.lang.String, java.lang.String)</function-signature>
    <example>
     ${mc:equals(name, searchString)
    </example>
 </function>   
 
<function>
    <description>things is not arrays</description>
    <name>arrayone</name>
    <function-class>com.cn.zx.common.Mction</function-class>
    <function-signature>boolean arrayone(java.lang.String,java.lang.String,java.lang.String)</function-signature>
    <example>
      ${arrayone(string,arrayString,split)}
    </example>
 </function>  
 </taglib>

第二步

     新建自定义标签类

/**
 * 自定义标签类
 * @author Maochao-zhu
 *
 */
public class Mction {
    
    /**
     * 判断两个字符串是否相等
     * @param input
     * @param substring
     * @return 相等返回true/不相等返回false
     */
    public static boolean equals(String input, String substring) {
         if(input.equals(substring)){ 
             return true;
         }
        return false;
    } 
    
    /**
     * 判断字符是否属于该字符串数组、字符串截取字段 split
     * exp: arrayone('1','1,23,4',',')
     * 数组是否包含字符串
     * @param input
     * @param array
     * @return
     */
    public static boolean arrayone(String input, String arrayString,String split) {
        if(null==input || null == arrayString || null == split ) return false;
        String [] array = arrayString.split(split);
        if(null==array) return false;
        for (int i=0; i<array.length; i++) {
           if(input.equals(array[i])){ 
               return true;
           }
        }
        return false;
   }
}

第三步

    在jsp也没引入你的自定义标签

    <%@taglib prefix="m" uri="/mc" %> 

第四步

    在jsp也就可以使用你的标签了

    ${m:arrayone('1','1,23,4',',')}
    这个页面显示的true,意思就是:数字1是否属于后面的1,23,4

    其实也有一个标签是 ${fn:contains('1','1,23,4')}下面是用法,但是如果是是这样的这样的字符串就不能判断出来了,${fn:contains('1','21,23,4')} 这个判断出来的值是true,这个意思是,后面的字符串中存在前面的1值,21中包含1,所以说存在返回true

    <c:set var="theString" value="I am from runoob"/>
    <c:if test="${fn:contains(theString, 'runoob')}">
       <p>找到 runoob<p>
    </c:if>
    <c:if test="${fn:contains(theString, 'RUNOOB')}">
       <p>找到 RUNOOB<p>
    </c:if>
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部