Struts2项目<s:debug>标签的问题

来源:互联网 发布:linux vim查看行数 编辑:程序博客网 时间:2024/04/28 18:55


在struts2看来sId是无效的名称,不符合规范的命名(必须将前2个字母写为小写,struts2将找不到这样的名字的属性),修改一下属性名称即可。
在struts2看来sId是无效的名称,不符合规范的命名(必须将前2个字母写为小写,struts2将找不到这样的名字的属性),修改一下属性名称即可。


今天在使用<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.ArrayListItr.checkForComodification(UnknownSource)atjava.util.ArrayListItr.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 开头,那么就很有可能引发一些莫名的问题。

使用Struts2 的时候建议不要要用set,get开头的函数,建议替换成find,make等开头。防止冲突


在struts2看来sId是无效的名称,不符合规范的命名(必须将前2个字母写为小写,struts2将找不到这样的名字的属性),修改一下属性名称即可。

0 0
原创粉丝点击