2010-11-16 3 views
10

Я пытаюсь сравнение строк сJSTL сравнение строк всегда возвращает ложное

<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 
} 

%> 

Любая помощь будет очень ценна.

Благодаря

+0

Что вы подразумеваете под "возвращает false". Вы уверены, что ваши '' теги фактически исполняются? – skaffman

ответ

13

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

request.setAttribute("dept", dept); 

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

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

+0

Отлично! Это идеальный ответ. Большое спасибо за ваше время. Это работает нормально. Я думаю, что EL не смог найти переменную dept в любой области. Как только я помещаю его в область запроса, он начинает работать нормально. – user509755

+0

Добро пожаловать. – BalusC

Смежные вопросы