2012-09-03 84 views
1

在下面的這是擺在JSP文件的Java代碼,錯誤:不兼容的操作數類型和對象

if (false == session.getAttribute("loggedin")) { 
    response.sendRedirect("login.jsp"); 
} 
else if (null == session.getAttribute("loggedin")) { 
    response.sendRedirect("login.jsp"); 
} 

我得到以下編譯錯誤:

incompatible operand types and object

這是怎麼引起的我該如何解決它?

+0

我只是把它放在一個JSP示例中,我沒有收到任何錯誤。我正在使用Jetty 8.1.5和Java 1.7.0_07 – andyb

+1

@andyb:OP顯然沒有使用Java 1.5或更新的語言來編譯JSP。 – BalusC

+0

@BalusC感謝澄清。我正準備安裝一箇舊版本來測試代碼:-) – andyb

回答

3

session.getAttribute()返回一個Object。一個對象不能與布爾值進行比較。所以表達式false == session.getAttribute("loggedin")無效。如果你想檢查是否Boolean.FALSE被存儲在會話屬性,則代碼應該是

if (Boolean.FALSE.equals(session.getAttribute("loggedin"))) 

注意,你最好把所有的Java代碼在普通的Java類和限制自己的JSP EL在JSP中。 Scriptlet不應該再使用了。

相關問題