这是我的Login.jsp
页面,我有一个名为LoginSuccessfull
的字符串变量来确定该用户是否成功登录。
我知道这个变量返回null
但我无法通过if
条件识别出来:
String LoginSuccessfull = String.valueOf(session.getAttribute("LoginSuccessfull"));
if (LoginSuccessfull==null || LoginSuccessfull.equalsIgnoreCase("Yes")) {
//Print something
} else {
//print something
}
我得到了NullPointerException
。
有什么问题?
答案 0 :(得分:1)
String.valueOf((Object)null)
将返回"null"
而不是null
。最好完全跳过这个转换(是字符串还是布尔值?)。
如果要保留转换,请先检查空值,或者与“null”进行比较。
Object loginFlag = session.getAttribute(FLAG);
if (loginFlag != null)
{
String loginFlagStr = String.valueOf(loginFlag);
if ("Yes".equalsIgnoreCase(loginFlagStr))
{
// yes
} else {
// not yes
}
} else {
// null
}
顺便说一句:目前还不清楚代码中的NullPointerException。我怀疑在你的情况下,唯一的地方可能是session
null
。您没有显示代码的这一部分。 (如果你使用getSession(false)
,可能会发生这种情况。)
答案 1 :(得分:0)
如果会话属性" LoginSuccessfull"如果不存在则您的语句String LoginSuccessfull = String.valueOf(session.getAttribute("LoginSuccessfull"));
将获得NullPointerException因为您尝试将null传递给String.valueOf
方法。这样,你的进一步检查和代码都不会被执行。
相反,你可以做类似的事情:
Object LoginSuccessfull = session.getAttribute("LoginSuccessfull");
if (LoginSuccessfull!=null && ((String)LoginSuccessfull).equalsIgnoreCase("Yes")){
// do something
}