2016-07-12 6 views
1

私はDBの内容を示すと、私はこのエラーが生じていますに問題がある:MySQLのJavaの例外:IndexOutOfBoundsException

org.apache.jasper.JasperException: java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 

は、誰かが私はこの問題を解決する手助けすることはできますか?私は私のJSPページで動作しますが、この特定のクエリは例外を持っているようだ別のクエリを持っている:

select epi.firstName, epi.lastName, esi.license 
from `employee-personal-information` epi 
join`employee-safeguard-information` esi 
    on epi.employeeID = esi.employeeID 
join oic oic 
    on esi.employeeID = oic.oicID; 

これは私のDAOコードです:

public ArrayList<Employee> viewOIC() { 
    ArrayList<Employee> newEmployee = new ArrayList<Employee>(); 

    try { 
     DBConnectionFactory myFactory = DBConnectionFactory.getInstance(); 
     Connection conn = myFactory.getConnection(); 
     PreparedStatement pstmt = conn.prepareStatement("select epi.firstName, epi.lastName, esi.license\n" + "from `employee-personal-information` epi join`employee-safeguard-information` esi on epi.employeeID = esi.employeeID\n" + " join oic oic on esi.employeeID = oic.oicID\n" + ";"); 



     ResultSet rs = pstmt.executeQuery(); 
     while (rs.next()) { 

      Employee tempRI = new Employee(); 
      tempRI.setFirstName(rs.getString("firstName")); 
      tempRI.setLastName(rs.getString("lastName")); 
      tempRI.setLicense(rs.getString("license")); 
      newEmployee.add(tempRI); 

     } 
     pstmt.close(); 
     conn.close(); 
     return newEmployee; 
    } catch (SQLException ex) { 
     Logger.getLogger(EmployeeDAO.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return null; 
} 

私はこの問題を解決する助けてください。どんな助けもありがとう!ありがとうございました!

私のJSPコード:

   <% EmployeeDAO employeeDAO = new EmployeeDAO(); 
          ArrayList<Employee> employeeList = employeeDAO.viewEmployee();%> 
       <div class="form-bottom"> 
        <form action="addTicket" method="post" class="complaint-form"> 

         <div class="form-group"> 
          Involved Guard: 
          <select name="form-guardInvolved" id="form-guardInvolved" onfocus="emptyElement('status')"> 
           <% for (int i = 0; i < employeeList.size(); i++) {%> 
           <option value="<%=employeeDAO.viewEmployee().get(i).getFirstName() + " "%> 
           <%=employeeDAO.viewEmployee().get(i).getLastName()%>"> <%=employeeDAO.viewEmployee().get(i).getFirstName() + " "%> 
           <%=employeeDAO.viewEmployee().get(i).getLastName()%> </option> 
           <% }%> 
          </select> 
          <p> </p> 
         </div> 
         <div class="form-group"> 
          Reported By: 
          <select name="form-reportedBy" id="form-reportedBy" onfocus="emptyElement('status')"> 
           <% for (int i = 0; i < employeeList.size(); i++) {%> 
           <option value="<%=employeeDAO.viewOIC().get(i).getFirstName() + " "%> 
           <%=employeeDAO.viewOIC().get(i).getLastName()%>"> <%=employeeDAO.viewOIC().get(i).getFirstName() + " "%> 
           <%=employeeDAO.viewOIC().get(i).getLastName()%> </option> 
           <% }%> 
          </select> 
          <p> </p> 
         </div> 

最初の部分は動作しますが、エラーが第二の部分です。

+1

例外スタックトレースを含めてください。 –

+0

投稿されたコードにIOOB例外がスローされる可能性があります。 –

+0

viewOIC()を呼び出すクラスで問題が発生している可能性が高いと思います。そのコードを追加することもできます。 – Jeutnarg

答えて

0

forループを設定しようとしましたか?(int i = 0; i <(employeeList.size() - 1); i ++)?

+0

私は今でもそれを試しましたが、それでも同じエラーです。私もint i = -1とi = 1を試しましたが、うまくいきません。私はここで問題がクエリ自体だと思うが、私は最初のクエリと同じフォーマットを使用しているので、私はそれを取得しない – bryxwarrior

+0

その作業は今。私は小さな間違いをした。私は油のためのarraylistを置かなかった。ありがとうございました! – bryxwarrior