На языке выражений вы можете просто использовать оператор ==
или eq
для сравнения значений объекта. За кулисами они действительно будут использовать Object#equals()
. Это делается так, потому что до текущей версии EL 2.1 вы не можете вызывать методы с другими сигнатурами, кроме стандартных методов получения (и установки) (в следующем EL 2.2 это было бы возможно).
То есть конкретная строка
<c:when test="${lang}.equals(${pageLang})">
должно быть записано как (обратите внимание, что все выражение находится внутри {
и }
)
<c:when test="${lang == pageLang}">
или, что эквивалентно
<c:when test="${lang eq pageLang}">
Оба за кадром грубо интерпретируются как
jspContext.findAttribute("lang").equals(jspContext.findAttribute("pageLang"))
Если вы хотите сравнить постоянные String
значения, то вам нужно заключить в кавычки
<c:when test="${lang == 'en'}">
или, что эквивалентно
<c:when test="${lang eq 'en'}">
, который за кадром грубо интерпретируется как
jspContext.findAttribute("lang").equals("en")