protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取数据
String id = request.getParameter("id");
Brand brand = brandService.selectById(Integer.parseInt(id));//返回的是Integer类型,所以参数最好为Integer类型
//存储到request域中
request.setAttribute("brand",brand);
//发送到/update.jsp
request.getRequestDispatcher("/update.jsp").forward(request,response);
起因是测试通过JSP回显数据时存在数据为空的情况,且浏览器一直提示:
HTTP Status 500 - Cannot invoke "java.lang.Integer.intValue()" because the return value of "java.lang.Integer.getInteger(String)" is null
虽然将id的值设为了Integer类型但是数据还是无法读取到
然后就开始测试各个阶段的问题:
首先是分析是否是路径问题导致id的值没法获取 false
然后是否是因为使用了EL表达式,使得对象中的值没法获取,改了头标签后还是false
最后还在servlet中一点点测试域中的值是否为空
String id = request.getParameter("id");
System.out.println(id==null);
Brand brand = brandService.selectById(Integer.getInteger(id));
System.out.println(brand==null);
发现: id返回为false,而brand返回的是true! 那问题就应该处在执行sql的问题上,确认sql语句没问题后,才发现获取id的方法用的是
Integer.getInteger();
而JSP中不会主动拆封,也可能是版本问题,所以会导致brand无法获取到id的值
解决方法:
Integer.parseInt();



