2013-03-08 41 views
0

我得到一个ArrayList好奇的错误,下面是代码(注意,这段代码是从一个在线servlet示例中复制的,我是一个JAVA新手)。JSP中的JAVA字符串错误

的JSP:

<%@page import="p.SecondExample"%> 
<%@ page language="java" import="java.util.*;"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
    <TITLE>Servlet Application</TITLE> 

    <script language="javascript"> 
function editRecord(id){ 

window.location.href="editServlet/"+id; 
} 


function deleteRecord(id){ 

window.location.href="deleteUser/"+id; 
} 
</script> 
</HEAD> 

<BODY> 
<br> 
    <table align="center"> 

</table> 
<br> 
<table width="600px" align="center" style="background-color:#EDF6EA;border:1px solid #000000;"> 
<tr><td colspan=9 align="center" height="10px"></td></tr> 

<tr><td colspan=9 align="center"><!-- <a href="addUser.jsp" style="font-weight:bold;color:#cc0000;">Add New User</a>--></td></tr> 
<tr><td colspan=9 align="center" height="10px"></td></tr> 
    <tr style="background-color:#7BA88B;font-weight:bold;"> 
      <td>Sector Segment</td><td>Color</td> 

</tr> 
<% 
String bgcolor=""; 
int count=0; 
List viewList = new ArrayList(); 
Iterator viewItr; 

SecondExample se = new SecondExample(); 
se.doPost(request, response); 

if(request.getAttribute("userList")!=null && request.getAttribute("userList")!="") 
{ 
    List userList = (ArrayList)request.getAttribute("userList"); 
    Iterator itr = userList.iterator(); 
    System.out.println(userList); 
    while(itr.hasNext()) 
    { 

     if(count%2==0) 
     { 
     bgcolor = "#C8E2D1"; 
     } 
     else 
     { 

      bgcolor = "#EAF8EF"; 
     } 

     viewList = (ArrayList)itr.next(); 
     int id = Integer.parseInt(viewList.get(0).toString()); 
     viewItr = viewList.iterator(); 
     %> 
     <tr style="background-color:<%=bgcolor%>;"> 
     <% 
     while(viewItr.hasNext()) 
     { 

      %> 
      <td><%=viewItr.next()%></td> 

      <% 

     } 
     count++; 
     %> 
     <td><input type="button" name="edit" value="Edit" style="background-color:#49743D;font-weight:bold;color:#ffffff;" onclick="editRecord(<%=id%>);" ></td> 
      <td><input type="button" name="delete" style="background-color:#ff0000;font-weight:bold;;color:#ffffff;" value="Delete" onclick="deleteRecord(<%=id%>);"></td> 
     </tr> 
     <% 
    } 
} 
if(count==0) 
{ 
    %> 
    <tr><td colspan="9" align="center">&nbsp;</td></tr> 
     <tr><td colspan="9" align="center">No Record Avaliable</td></tr> 
    <% 
} 
%> 
    <tr><td colspan=9 align="center" height="2px"></td></tr> 
    </table> 
    </BODY> 
    </HTML> 
在调试

,出现误差的发生:

 viewList = (ArrayList)itr.next(); 
     int id = Integer.parseInt(viewList.get(0).toString()); 
     viewItr = viewList.iterator(); 

为其中出现在我的错误:

org.apache.jasper.JasperException: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList 

我不太清楚为什么或如何制作下一个字符串。任何帮助是极大的赞赏。

+1

那么,错误很明显。你的迭代器只包含字符串,但你试图将其转换为一个ArrayList – Dimitri 2013-03-08 19:24:26

回答

3

是的,itr.next()返回String,它不能被投入ArrayList

String value = (String) itr.next(); 
int id = Integer.parseInt(value); 

下面的几行代码中,你会遍历您viewArray现在可以去掉了。

+0

,所以在交换出viewList =(ArrayList)之后,itr.next(); int id = Integer.parseInt(viewList.get(0).toString()); viewItr = viewList.iterator();对于\t \t \t String value =(String)itr.next(); \t \t \t int id = Integer.parseInt(viewList.get(0).toString()); \t \t \t viewItr = viewList.iterator();我得到一个关于int id = Integer.parseInt(value)的错误;它说它无法找到我的第一个数据点的来源 – Deprecated 2013-03-08 20:39:42