問題:
調用list時報錯。
type Exception report
message java.util.NoSuchElementException
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.util.NoSuchElementException com.paipai.webframework.dispatcher.PaiPaiDispatcher.serviceAction(PaiPaiDispatcher.java:713) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) com.paipai.webframework.filter.PaiPaiDispatcherFilter.doFilter(PaiPaiDispatcherFilter.java:175) org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root cause
java.util.NoSuchElementException java.util.ArrayList$Itr.next(ArrayList.java:834) webbench.web.action.WebBenchAction.QueryTaskDetail(WebBenchAction.java:167) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
代碼:
else{ jsonRootMap.put("ret", 0); jsonRootMap.put("msg", "查詢任務成功。"); /*解析返回包*/ Iterator<WebBenchTask> i = webbenchtasklist.iterator(); while (i.hasNext()){ jsonTaskMap.put("TaskId", i.next().getTaskId()); jsonTaskMap.put("User", i.next().getUser()); jsonTaskMap.put("Ip", i.next().getIp());
問題原因:
i.next()每執行一次,游標后移以為。上述循環造成越界;
解決辦法:
Iterator<WebBenchTask> i = webbenchtasklist.iterator(); while (i.hasNext()){ WebBenchTask task = i.next(); jsonTaskMap.put("TaskId", task.getTaskId()); jsonTaskMap.put("User", task.getUser()); jsonTaskMap.put("Ip", task.getIp()); jsonTaskMap.put("Url", task.getUrl());