最近我学习SSH在做一个人力资源系统时,实现删除功能时老是出现系统崩溃,就是点击其他action都是无尽等待了...
具体代码如下:Action里的删除方法,用的是一个循环来批量删除,docids是一个数组,用来存储要删除的docid.
public String deleteDoc(){
int len = docids.length;
for(int i=0;i<len;i++){
document = docService.getDocumet(docids[i]);
docService.deleteDocument(document);     
}
return SUCCESS;
}jsp里红色字体部分就是用来提交docid:
     <s:iterator value="documents" >
     <tr>
       <td class="td_bg"><s:property value="docid"/></td>
       <td class="td_bg"><s:property value="docname"/></td>
       <td class="td_bg"><s:property value="employeeid"/></td>  
       <td class="td_bg"><s:property value="note"/></td> 
       <td class="td_bg"><a href="<s:url action='Detaildoc.action'><s:param name='document.docid' value='docid'/></s:url>">查看</a></td>
       <td class="td_bg"><a href="<s:url action='Editdoc.action'><s:param name='document.docid' value='docid'/></s:url>">修改</a></td>
       <td class="td_bg"><input name="docids" type="checkbox" value="<s:property value="docid"/>" align="middle"></td>
     </tr>
     </s:iterator>执行删除的action后,我是用一个重定向action的result再获取列表然后在页面显示的.另外docservice里的deleteDocument方法就是简单用DAO的DELETE方法删除实例.然后我执行删除时,第一次执行没问题 但是如果执行第二次后  也能删除成功,,但是系统就是出现不能执行其他action了,点击其功能action都没反应

解决方案 »

  1.   

       这个我问题我之前遇到过
         在一个事务里对一张表进行查询和删除或者修改就会出现这样的情况
        报的错一般是超时
         解决的方法是:如果用了hibernate的话,那就用hibernate的方法而不是jdbc的方法 问题能解决
         如果是jdbc操作  那就别把这二个方法放在同一个service中就OK了
      
      

  2.   


    for(int i=0;i<len;i++){
       document = docService.getDocumet(docids[i]);
       if(document!=null){
           docService.deleteDocument(document); 
       }
    }这样试试
      

  3.   

    今天把批量删除改成普通的单个删除  还是会出现超时, 看来不是这个批量删除的问题了   因为现在才刚学SSH  事务控制那些还不太懂  有没高人指导一下
      

  4.   


    我没有用JDBC,所以不是你说的那个问题..还是谢谢了, 问题已经解决了, 就是没有关闭session