1

我得到了一个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从 servlet 传递,我 jsp 给出了一个NullPointerException.

我尝试检查是否存在,employees但它不会改变任何东西。arr_sizenull

谢谢。

4

2 回答 2

3

即使数组本身不为 null,也很可能employees[i]为 null - 导致NullPointerException. 您可以通过跳过这些元素来避免这种情况:

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

请注意,它不是非常优雅。如果您使用 Java 5 进行编译,我还建议使用增强的 for 循环,这将使代码更清晰:

<%
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 之外......

于 2010-01-10T13:24:41.900 回答
0

我可以看到您尚未检查的唯一一件事是您的员工数组的元素。如果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 循环

于 2010-01-10T13:27:02.617 回答