關于空指針錯誤的問題
public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)
throws?ServletException,?IOException?{
request.setCharacterEncoding("utf-8");
Users?u?=?new?Users();
String?username,mypassword,gender,email,introduce;
boolean?isAccept;
Date?birthday;
String[]?favorites;
SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd");
try
{
username?=?request.getParameter("username");
mypassword?=?request.getParameter("mypassword");
gender?=?request.getParameter("gender");
email?=?request.getParameter("email");
introduce?=?request.getParameter("introduce");
birthday?=?sdf.parse(request.getParameter("birthday"));
isAccept=request.getParameter("isAccept")!=null?true:false;
//用來獲取多個復選按鈕的值
favorites?=?request.getParameterValues("favorite");
u.setUsername(username);
u.setMypassword(mypassword);
u.setGender(gender);
u.setEmail(email);
u.setFavorites(favorites);
u.setIntroduce(introduce);
u.setFlag(isAccept);
u.setBirthday(birthday);
//把注冊成功的用戶對象保存在session中
request.getSession().setAttribute("regUser",?u);
//跳轉到注冊成功頁面
request.getRequestDispatcher("../userinfo.jsp").forward(request,response);
}
catch(Exception?ex)
{
ex.printStackTrace();
}
}一下兩行代碼 為什么使用第二行代碼時不勾選復選框就會報空指針異常 而用第一行代碼就能夠正常返回false呢? ?我的理解: 當不勾選時request.getParameter("isAccept").equals("true")該表達式的值為假那么則返回false ?
?isAccept=request.getParameter("isAccept")!=null?true:false;
isAccept=request.getParameter("isAccept").equals("true")?true:false;
2015-12-30
一般這種情況這樣寫比較合理isAccept="true".equals(request.getParameter("isAccept"))?true:false; 這樣既符合你的寫法,也不會報空指針
2015-12-30
isAccept這個復選框你不勾選的時候是不會傳任何數據過來的。所以服務器用request.getParameter("isAccept")取得的是null。這是個經驗,記得就行了