java.lang.IndexOutOfBoundsException:索引:1,大小:1

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

我试图通过创建数组列表从数据库中的下拉列表中获取一些值,但是当数据库中只有一行时,它会给出以下错误消息

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1  

我在 jsp 页面中的代码是:

<% List<MedicalModel> SpecialityList= (ArrayList<MedicalModel>)request.getAttribute("speciality"); %>
<select name="SelectedDiagnosisID">
<% 
    for( int i=0; i<SpecialityList.size(); i++){   
%>
<option value ="<%=(SpecialityList.get(i).getDiagnosisID())%>"><%=(SpecialityList.get(i).getSpeciality())%></option>

<%}%>
</select>

与该问题无关,但是当您调用 request.getAttribute("speciality") 时,可能 return null 如果这实际上并未在该名称的请求属性中设置。因此,在 SpecialityList:

上使用 . 运算符之前,您需要检查是否为 null
if(SpecialityList!=null)
{
   for(int i=0; i<SpecialityList.size(); i++)
   { 
       ...
   }
}

但是你的 for 看起来没问题,因为在这个 for 循环中,如果你的数组大小为 1,你最终只会尝试访问 0 处的索引,所以你应该不会得到 IndexOutOfBoundsException 除非您以某种方式甚至没有在您正在创建数组并将其设置在请求属性中的 servlet 中的数组中放置一个项目。因此,问题可能出在您如何将值放入数组中。