Pregunta

Me estoy poniendo un NullPointerException que no pude mango. Soy un novato en Java por lo que te agradecería cualquier ayuda.

<%
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>
<%}%>

array arr y arr_size se pasa desde un servlet y JSP da una NullPointerException.

He intentado comprobar si employees y arr_size es null o no, pero eso no cambia nada.

gracias.

¿Fue útil?

Solución

Incluso si la matriz en sí no es nulo, es muy posible que employees[i] sería nula - que conduce a una NullPointerException. Se podría evitar esto se omiten tales elementos:

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

No es terriblemente elegante, le importaría. También me sugieren usar el bucle for mejorado si se está compilando con Java 5, lo que haría que el limpiador de código:

<%
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>
<%}%>

Tenga en cuenta que he ignorado arr_size ya que no parecía ser de usarlo. ¿Cómo fue destinado a representar?

Por último, me gustaría sugerir la lógica se mueve fuera de su JSP si es posible ...

Otros consejos

Lo único que puedo ver que usted no ha obtenido todavía los elementos de la matriz de los empleados. Si se employees[i] null en cualquier momento, haciendo referencia a que arrojará un NullPointerException.

Prueba esto:

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

en lugar de la corriente para el bucle

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top