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

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

返回真

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

返回假

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

4

2 回答 2

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 而不是 String 的 endsWith

于 2013-05-25T16:36:54.360 回答
0

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

于 2014-02-25T07:51:09.387 回答