I face a problem with AntPathMatcher
of Spring Boot version 2.5.5
. I assume the Ant matcher should return true
if the pattern
and path
are equal and none of them contains Ant-specific characters (i.e. let's say it contains only alphanumeric characters).
The following lines demonstrate the assumption failure:
new AntPathMatcher().match("consent", "consent"); // true
new AntPathMatcher().match("consentreg", "consentreg"); // true
new AntPathMatcher("\\t").match("consent", "consent"); // true
new AntPathMatcher("\\t").match("consentreg", "consentreg"); // false
Do I assume the behavior wrongly? What am I missing here?
CodePudding user response:
You can't use multi-character separators with AntPathMatcher
. The path separator is passed to StringUtils.tokenizeToStringArray(String, String, boolean, boolean)
as the delimiters
argument. This argument is described as "the delimiter characters, assembled as a String
(each of the characters is individually considered as a delimiter)". In its current form, your code is telling AntPathMatcher
to use \
and t
as path separators. As a result, consentreg
is split into two strings: consen
and reg
.
Perhaps you meant to use a tab character as the separator:
new AntPathMatcher("\t").match("consentreg", "consentreg"); // true