Сравнение строк JSTL всегда возвращает false - PullRequest
10 голосов
/ 16 ноября 2010

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

<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 Ответ

13 голосов
/ 16 ноября 2010

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

request.setAttribute("dept", dept);

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...