核心控制器method.invoke(object,request,response);出错

来源:2-5 核心控制器

webyy1139677

2019-07-19 14:03:19

还是核心控制器出错

try {
    Class cla = Class.forName(className);
    Object object = cla.newInstance();
    Method method = cla.getMethod(methodName,HttpServletRequest.class, HttpServletResponse.class);
    method.invoke(object,request,response);


method.invoke(object,request,response); 提示是这句出错,用debug跟踪后发现,是运行到BookController类下面的list方法里的if(pageNum==null) pageNum="1";这句以后就跳出错误了,可是这句话看不出什么问题啊!?而且方法里的println语句执行了也没看到控制台上有输出?这是怎么回事?

 public void list(HttpServletRequest request,HttpServletResponse response){
        System.out.println("book.list方法执行了~~~~~~~~~~");
        String pageNum = request.getParameter("pageNum");
        if(pageNum==null) pageNum="1";

        PageHelper.startPage(Integer.parseInt(pageNum),10);

//        先取分类
        List<Category> categoryList=categoryBiz.getAll();
        request.setAttribute("caList",categoryList);


        List<Book> list =bookBiz.getAll();
        PageInfo pageInfo = PageInfo.of(list);
        request.setAttribute("pageInfo",pageInfo);
        try {
            request.getRequestDispatcher("/WEB-INF/pages/admin/category.jsp").forward(request, response);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

出错信息:

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.webyy.book.global.GlobalController.service(GlobalController.java:59)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at com.webyy.book.global.EncodingFilter.doFilter(EncodingFilter.java:16)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

Caused by: java.lang.NumberFormatException: null

at java.lang.Integer.parseInt(Integer.java:542)

at java.lang.Integer.parseInt(Integer.java:615)

at com.webyy.book.controller.BookController.list(BookController.java:27)

... 30 more


写回答

1回答

好帮手慕阿莹

2019-07-19

同学你好,

http://img.mukewang.com/climg/5d3161e200011f8207040179.jpg

是指要转换成数字的参数是null,所以数字转换异常。

建议同学把pageNum="1";  这句话用{ } 括起来试试。

if(pageNum==null){ pageNum="1"; } 并且在调用Integer.parseInt(pageNum)之前再打印一下pageNum试试。

同学是否是debug的时候控制台没有输出呢?按上边的修改后,如果不用debug,正常运行模式下是否可以呢?

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



0

0 学习 · 8016 问题

查看课程