删除菜品list时候的空指针异常怎么处理啊?

删除菜品list时候的空指针异常怎么处理啊?

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);

}

}

请问如上面这个servlet,是要删除菜品的,会报空指针异常,请问怎么处理?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,首先判断没有输入的菜品id应该是在循环外,遍历所有的循环后,如果没有找到对应的菜品id,再将提示信息存入request中,并转发到删除菜品的页面。另外建议在查到对应的菜品id,使用remove移除菜品信息后,使用break;跳出循环,在循环外判断是否找到了输入的菜品id。

替换为如下代码再试试:

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);
}

如果还有问题,建议同学将报错信息贴上来。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 邱虎666 提问者 #1
    老师,按照您的建议,还是报空指针异常,貌似是取那个foods的时候,当没有添加任何foods的时候,就报错。我再重新发个新帖子吧,把报错信息也贴上来。
    2019-01-17 08:28:04
  • 好帮手慕阿满 回复 提问者 邱虎666 #2
    同学的问题在http://class.imooc.com/course/qadetail/88546中被回答,请前去观看。祝:学习愉快~
    2019-01-17 10:32:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师