2012-06-21 60 views
2

main.jsp中重定向頁面

String name = session.getAttribute("name").toString(); 
if (name == "" || name == null) { 

    response.sendRedirect("index.jsp"); 

} 

當用戶訪問這個頁面登錄,有在主網頁沒有問題。但是,當用戶想嘗試不登錄訪問的頁面,我想重定向頁面的index.jsp來,但

org.apache.jasper.JasperException: An exception occurred processing JSP page /main.jsp 

如何重定向到的index.jsp

+0

我SUS在這種情況下,會話中的'name'屬性將是'null'。我絲毫不知道這個框架,但我認爲你遇到了NullReferenceException。 name屬性爲null,不能使用null對象的實例方法('toString()')。在你的情況下,'name == null'檢查是完全無用的,因爲它在null引用異常發生之前無法檢查null!我的提示:在執行'toString()'之前檢查'session.getAttribute(「name」)''null。 – sinni800

+0

我不寫java,但是你不能只用try ... catch在toString()行嗎?然後在抓住只是做你的重定向? –

+0

@JasperMogg這也會起作用,但它有點像「錯誤?只是試着抓住它們!」的解決方法。還據我所知,嘗試捕獲在CPU上比在空白參考例外情況下對空值檢查要昂貴得多。 – sinni800

回答

1

變化

String name = session.getAttribute("name").toString(); 

TO

String name = (String)session.getAttribute("name"); 
+0

爲什麼這樣嗎? –

+0

我也不明白,它可能是一個框架怪癖,''屬性'可以轉換爲空字符串;-)。誰知道? – sinni800

+0

@JasperMogg http://stackoverflow.com/questions/709263/whats-the-difference-between-casting-an-int-to-a-string-and-the-tostring-meth這是我的工作!謝謝FM –