删除菜品的时候空指针异常,请问怎么处理呢

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Food> foods = (List<Food>) request.getServletContext().getAttribute("foods");
String id = request.getParameter("id");
//
// if (!foods.isEmpty()) {
// for (Food fo : foods) {
// if (id.equals(fo.getId())) {
// foods.remove(fo);
// response.sendRedirect("/mook_food/showFoodList.jsp");
// return;
// } else {
// request.setAttribute("msg", "没有您输入的菜品id!");
// request.getRequestDispatcher("/deleteById.jsp").forward(request, response);
//
// }
//
// }
// }else {
// request.setAttribute("msg1", "当前没有任何菜品,请先添加!");
// request.getRequestDispatcher("/deleteById.jsp").forward(request, response);
// }
boolean flag = false;
for (Food fo : foods) {
if (id.equals(fo.getId())) {
foods.remove(fo);
flag = true;
break;
}
}
if(flag) {
request.getRequestDispatcher("/showFoodList.jsp").forward(request, response);
}else {
request.setAttribute("msg", "没有您输入的菜品id!");
request.getRequestDispatcher("/deleteById.jsp").forward(request, response);
}
}
老师,上面的代码注释部分是我第一次写的,下面一部分是按照您建议改的,都是报空指针异常。就是当我什么菜品都不添加,直接点击删除页面的时候,这时候foods都是空的,就是报这个错,请问应该怎么处理呢?
正在回答
同学你好,同学的菜品信息是存放在ServletContext()中的吗?如果是,这时的foods没有获取到值,同学可以在修改后的代码外部添加foods为空的判断,如:
if (!foods.isEmpty()) {
boolean flag = false;
for (Food fo : foods) {
if (id.equals(fo.getId())) {
foods.remove(fo);
flag = true;
break;
}
}
if(flag) {
request.getRequestDispatcher("/showFoodList.jsp").forward(request, response);
}else {
request.setAttribute("msg", "没有您输入的菜品id!");
request.getRequestDispatcher("/deleteById.jsp").forward(request, response);
}
}
}else{
request.setAttribute("msg1", "当前没有任何菜品,请先添加!");
request.getRequestDispatcher("/deleteById.jsp").forward(request, response);
}如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星