0

ArrayList で奇妙なエラーが発生しました。以下にコードを示します (このコードはオンラインのサーブレットの例からコピーしたものであることに注意してください。私は 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

next を文字列にする理由や方法がよくわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

3

はい、をitr.next()返しますString。これはにキャストできませんArrayList

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

繰り返し処理している次の数行のコードも、ここviewArrayで削除できます。

于 2013-03-08T19:25:01.047 に答える