前段时间用到了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>