Вопрос

я получаю NullPointerException с чем я не смог справиться.Я новичок в Java, поэтому буду признателен за любую помощь.

<%
Employee employees[] = (Employee []) request.getAttribute("arr");
Integer arr_size= (Integer) request.getAttribute("arr_size");
for(int i=0;i<employees.length;i++){ %>
<tr><td><b>.</b></td><td><%=employees[i].getName()%></td><td>
    <%=employees[i].getLname()%></td><td><%=employees[i].getType()%></td><td>
    <%=employees[i].getEmail()%></td><td><a href="">Edit Employee Details</a></td>
</tr>
<%}%>

arr массив и arr_size передается из сервлета, и я jsp выдает NullPointerException.

Я попробовал проверить, если employees и arr_size является null или нет, но это ничего не меняет.

Спасибо.

Это было полезно?

Решение

Даже если сам массив не равен нулю, вполне возможно, что employees[i] будет нулевым, что приведет к NullPointerException.Этого можно избежать, пропустив такие элементы:

for(int i=0;i<employees.length;i++) { 
    if (employees[i] == null) {
        continue;
    }
%>

Заметьте, это не очень элегантно.Я бы также предложил использовать расширенный цикл for, если вы компилируете с помощью Java 5, что сделает код чище:

<%
Employee employees[] = (Employee []) request.getAttribute("arr");
for (Employee employee : employees) {
    if (employee == null) {
        continue;
    } %>
<tr><td><b>.</b></td><td><%=employee.getName()%></td><td>
    <%=employee.getLname()%></td><td><%=employee.getType()%></td><td>
    <%=employee.getEmail()%></td><td><a href="">Edit Employee Details</a></td>
</tr>
<%}%>

Обратите внимание, что я проигнорировал arr_size поскольку вы, похоже, им не пользовались.Что оно должно было представлять?

Наконец, я бы предложил перенести логику за пределы вашего JSP, если это вообще возможно...

Другие советы

Единственное, что я вижу, что вы еще не проверили, - это элементы массива ваших сотрудников.Если employees[i] является null в любой момент ссылка на него вызовет NullPointerException.

Попробуй это:

for(int i=0;i<employees.length;i++){ 
  Employee e = employees[i];
  if (e != null) {%>
    //current code you have goes here
  <% }} %>

вместо текущего цикла for

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top