JSTL Bug在功能上结束了吗?

时间:2013-05-25 14:33:03

标签: java jsp jstl ends-with

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

<c:set var="some" value="abcdef"/>
${fn:endsWith(some, 'ef')}

返回true

<c:set var="some" value="abcdefef"/>
${fn:endsWith(some, 'ef')}

返回false

看起来函数endsWith从开始而不是从结尾检查字符串。 如果来自第二个参数的字符串在第一个参数中不仅在其末尾出现,那么该函数返回false。

2 个答案:

答案 0 :(得分:3)

是的,他们是jstl中的错误

public static boolean endsWith(String input, String substring)
    {
        if (input == null)
            input = "";
        if (substring == null)
            substring = "";
        int index = input.indexOf(substring);
        if (index == -1)
            return false;
        if (index == 0 && substring.length() == 0)
            return true;
        return (index == input.length() - substring.length());
}

它使用indexof而不是StringW /的finallyWith

答案 1 :(得分:0)

尝试使用Apache版本http://tomcat.apache.org/taglibs/standard/替换JSTL JAR文件。它为我解决了同样的问题。