2010-11-16 100 views
10

我想字符串比較JSTL字符串比較總是返回false

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

但這總是返回false。我檢查部門變量的值爲'account'。我也試過這樣

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

這也返回false

但是,如果我用Java代碼這樣即可正常工作

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

blah blah blah 
} 

%> 

任何幫助將非常感激。

感謝

+0

你是什麼意思的「返回false」。你確定你的''標籤實際上正在執行嗎? – skaffman 2010-11-16 16:44:34

回答

13

症狀表明,你已經宣佈它在小腳本範圍,而不是在EL範圍。 Scriptlets和EL不具有相同的範圍。 EL使用PageContext#findAttribute()來解決變量。將dept放在頁面,請求,會話或應用程序範圍之一中。選擇哪一個取決於dept本身的唯一目的。我會從請求範圍開始。例如。在一個servlet:

request.setAttribute("dept", dept); 

這樣它會提供EL通過${dept}

畢竟,最好是避免使用scriptletscompletely。 Java代碼屬於Java類,不屬於JSP文件。

+0

非常棒!這是一個完美的答案。非常感謝您的時間。這工作正常。我認爲EL無法在任何範圍內找到部門變量。只要我把它放在請求範圍內,它就能正常工作。 – user509755 2010-11-16 18:13:33

+0

不客氣。 – BalusC 2010-11-16 18:14:47