2010-01-10 4 views
1

Je reçois un NullPointerException que je ne pouvais pas gérer. Je suis un débutant en Java alors j'apprécierais toute aide.null pointeur exception aide

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

tableau arr et arr_size est passé d'un servlet et je jsp donne une NullPointerException.

J'ai essayé de vérifier si employees et arr_size est null ou non mais cela ne change rien.

merci.

+1

On dirait que vous n'utilisez arr_size donc il doit être des employés ou l'un des éléments employés qui est nulle. Quel code as-tu essayé de vérifier pour le null? –

+0

J'ai essayé si (les employés! = Null) { boucle } et oui trace complète de la pile est int les journaux, mais je ne sais pas comment l'utiliser. – huhuhuuu

Répondre

3

Même si le tableau lui-même n'est pas nul, il est tout à fait possible que employees[i] soit null - menant à NullPointerException. Vous pouvez éviter cela en ignorant ces éléments:

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

Ce n'est pas très élégant, remarquez bien. Je vous suggère également d'utiliser la boucle améliorée si vous compilez avec Java 5, ce qui rendrait le code plus propre:

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

Notez que je l'ai ignoré arr_size que vous ne semblez utiliser . Qu'est-ce que c'était censé représenter?

Enfin, je vous suggère de logique en mouvement en dehors de votre JSP, si possible ...

+0

Quelle logique? Tout ce qu'il fait est d'imprimer le contenu. Ce n'est pas comme s'il faisait des calculs sur eux ou sur quelque chose. –

+0

merci beaucoup skeet. – huhuhuuu

+0

Je suis d'accord pour laisser la logique hors de la jsp, mais j'ai besoin d'afficher un tableau comme vous le voyez, y a-t-il un moyen de le faire autrement que de cette façon? – huhuhuuu

0

Ils seule chose que je peux voir que vous ne l'avez pas encore vérifié est les éléments de votre tableau employés. Si employees[i] est null à tout moment, le référencer lancera un NullPointerException.

Essayez ceci:

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

au lieu du courant de boucle

+0

le Skeet m'a battu à elle ( – Jorn

+0

merci beaucoup quand même: D problème est résolu – huhuhuuu