4
<%@ 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が文字列を最後ではなく最初からチェックしているようです。2 番目の引数の文字列が最初の引数の末尾だけでなく、最初の引数にも現れる場合、関数は 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());
}

StringのendsWithの代わりにindexofを使用しています

于 2013-05-25T16:36:54.360 に答える
0

代わりに、JSTL JAR ファイルを Apache バージョンのhttp://tomcat.apache.org/taglibs/standard/に置き換えてみてください。それは私のために同じ問題を修正します。

于 2014-02-25T07:51:09.387 に答える