내가 행을 클릭 한 다음 해당 ID가 내 작업 클래스 AddBookToSession.java
으로 전송 될 때 사용자가 행을 선택하는 곳의 그리드가 있고 병동이 내 JSP 페이지에 목록을 반환하는 경우 invoice.jsp
Error : java.util.ConcurrentModificationException
사용자가 그리드에서 행을 선택할 때 java.util.ConcurrentModificationException
오류가 발생합니다.
나는이 similar question을 읽었지만 여전히 내 문제를 해결할 수 없다.
내 문제는 다음과 같습니다. 이유가 무엇입니까? java.util.ConcurrentModificationException
오류 및이 문제를 어떻게 해결할 수 있습니까? 이 문제를 해결하도록 도와주세요. 콘솔
오류 :
Dec 10, 2012 11:37:30 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:819)
at java.util.ArrayList$Itr.next(ArrayList.java:791)
at org.apache.struts2.components.IteratorComponent.end(IteratorComponent.java:334)
at org.apache.struts2.views.jsp.IteratorTag.doAfterBody(IteratorTag.java:87)
-------------------
------------------
invoice.jsp
<s:if test="#session['BOK'].size() > 0">
<table width="100%" class="userTable" valign="top" border="0">
<s:iterator value="#session.BOK" status="userStatus">
<tr class="<s:if test="%{#userStatus.odd == true}">odd</s:if> <s:else>even</s:else>">
<td width="80%"><s:property value="bookTitile" /></td>
<td align="right" width="20%">
<s:url id="cancelURL" action="RemovebooksFromSession" namespace="/admin/setups/secure/jspHomepage/bookstransaction">
<s:param name="bkid" value="%{id}"></s:param>
</s:url>
<sj:a href="%{cancelURL}" targets="myAdvanceDivBoxx">Rem</sj:a></td>
</tr>
</s:iterator>
</table>
</div>
</s:if>
AddBookToSession.java
public String execute()
{
String bookid = request.getParameter("bid");
String qnty=dao.getquantityById(Integer.parseInt(bookid));
if(qnty.equals("0")||qnty.equals("")||qnty.equals("null")){
return SUCCESS;
}
Bookdetails book = dao.listBookDetailsById(Integer.parseInt(bookid));
books = (ArrayList) session.get(BillTransactionBooksConstants.BOK);
if (books == null) books = new ArrayList<Bookdetails>();
boolean already_exists = false;
for (Bookdetails b : books)
{
if (Integer.toString(b.getId()).equals(bookid))
{
already_exists = true;
break;
}
}
if (book != null && !already_exists )
{
books.add(book);
System.out.println("books size"+books.size());
session.put(BillTransactionBooksConstants.BOK,books);
}
return SUCCESS;
}
JSP가 세션의 목록에서 책을 제거하는 것처럼 보입니다. 올바른 JSP 코드를 보여주고 있습니까? 또한 stacktrace를 더 게시해야합니다 (예 : 현재 JSP 이름이 누락되었습니다. –
@BheshGurung 그것이 올바른 jsp입니다. 세션에서 내가 추가 한 목록은 여기에서 반복됩니다. 나는 목록에서 제거 할 링크 삭제 북을주었습니다. –