Сравнение строк JSTL всегда возвращает false

Я пытаюсь провести сравнение строк с

<c:if test="${dept eq 'account'}"></c:if>

Но это всегда возвращает false. Я проверяю переменную dept на значение 'account'. Я тоже так пробовал

<c:if test="${dept == 'account'}"></c:if> 

Это также возвращает false.

Но если я использую код java, как это, тогда он отлично работает

<%
if(dept.equals("account")){

blah blah blah
}

%>

Любая помощь будет действительно оценена.

Спасибо

Ответ 1

Симптомы указывают, что вы объявили его в области сценария, а не в области EL. Скрипты и EL не имеют одинаковой области видимости. EL разрешает эту переменную использовать под обложками PageContext#findAttribute(). Поместите dept в одну из областей страницы, запроса, сеанса или приложения. Выбор одного зависит от единственной цели самого dept. Я бы начал с области запроса. Например. в сервлете:

request.setAttribute("dept", dept);

Таким образом, он будет доступен в EL с помощью ${dept}.

В конце концов, лучше всего избегать использования сценариев . Java-код принадлежит классам Java, а не JSP файлам.