今天在使用<s:debug>
标签做测试的时候,总会出现一个问题,
十二月 16, 2015 10:32:56 上午 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
Java.util.ConcurrentModificationException
at java.util.ArrayList Itr.checkForComodification(UnknownSource)atjava.util.ArrayList Itr.next(Unknown Source)
at org.apache.struts2.components.Debug.start(Debug.java:68)
at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(Compone
…后面省略了一大堆
其实关键的问题已经暴露出来了。就是ConcurentModificationException,并发修改异常。
为什么会出现这种问题,我们知道Get,Set开头的方法是Bean对象的一个重要特征,然后Struts2中也使用到了Get,Set开头的函数如:
- GetModel
- getServletRequest
- getServletResponse
- setServletRequest
- setServletResonse
上面的方法是Action实现
- ModelDriven<T>
- ServletRequestAware
- ServletResponseAware
接口时候需要实现的方法
由上面可以看出,以Get或者Set开头的函数都是Struts2内部基本上会以某种方式调用。如果我们的函数以Get或者Set 开头,那么就很有可能引发一些莫名的问题。