背景:使用SSM框架;
操作:访问项目中的一个页面后,使用浏览器的回退键再次访问该页面;
错误:
Description The server encountered an unexpected condition that p> revented it from fulfilling the request.Exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1013)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
错误出现的原因:回退时会向回退后的url重发请求,处理该请求的Controller中对应方法所需要的部分参数在请求时没有值,Filter在给controller的对应方法赋值时获取不到值,所以报空指针错误;
解决方法一:在第一次访问该页的请求,或者说访问出错的页请求链接上加上处理该请求的方法所需的参数;
解决方法二:在Controller中配置两个处理对应url请求的方法,一个无参(用来处理回退的情况),一个有参(用于处理正常的有参数的请求)。