Domanda

Ricevo un NullPointerException che non potevo maniglia. Sono un principiante in java così Apprezzerei tutto l'aiuto.

<%
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 e arr_size viene passato da un servlet e JSP dà un NullPointerException.

Ho provato a verificare se employees e arr_size è null o no, ma non cambia nulla.

Grazie.

È stato utile?

Soluzione

Anche se la matrice in sé non è nulla, è molto probabile che employees[i] sarebbe nulla - che porta ad un NullPointerException. Si potrebbe evitare questo saltando tali elementi:

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

Non è terribilmente elegante, le dispiacerebbe. Vorrei anche suggerire utilizzando il migliorato per ciclo se si sta compilando con Java 5, il che renderebbe il codice più pulito:

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

Si noti che ho ignorato arr_size come non sembrano essere ad usarlo. Che è stato significava rappresentare?

Infine, io suggerirei di spostare la logica di fuori della JSP, se possibile ...

Altri suggerimenti

L'unica cosa che posso vedere che non avete ancora controllato è gli elementi della matrice dipendenti. Se employees[i] è null in qualsiasi punto, riferimento si getterà un NullPointerException.

Prova questo:

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

anziché l'attuale ciclo for

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top