开发者

null pointer exception help

开发者 https://www.devze.com 2022-12-16 11:28 出处:网络
I\'m getting a NullPointerException that I couldnt handle. I\'m a newbie in java so I\'d appreciate any help.

I'm getting a NullPointerException that I couldnt handle. I'm a newbie in java so I'd appreciate any help.

<%
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&g开发者_开发知识库t;<td><a href="">Edit Employee Details</a></td>
</tr>
<%}%>

arr array and arr_size is passed from a servlet and I jsp gives an NullPointerException.

I tried checking if employees and arr_size is null or not but it doesn't change anything.

thanks.


Even if the array itself isn't null, it's quite possible that employees[i] would be null - leading to a NullPointerException. You could avoid this by skipping such elements:

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

It's not terribly elegant, mind you. I'd also suggest using the enhanced for loop if you're compiling with Java 5, which would make the code cleaner:

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

Note that I've ignored arr_size as you didn't appear to be using it. What was it meant to represent?

Finally, I'd suggest moving logic outside your JSP if at all possible...


They only thing that I can see that you haven't checked yet is the elements of your employees array. If employees[i] is null at any point, referencing it will throw a NullPointerException.

Try this:

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

instead of the current for loop

0

精彩评论

暂无评论...
验证码 换一张
取 消