2012-06-21 290 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 –