我得到一个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

我想检查是否employeesarr_sizenull或没有,但它不会改变任何东西。

感谢。

有帮助吗?

解决方案

即使阵列本身不为空,它很可能是employees[i]是空 - 导致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外移动的逻辑,如果在所有可能的...

其他提示

他们只有我可以看到你没有检查又是你的员工数组中的元素。如果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
  <% }} %>

,而不是为环路电流

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top