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、サーブレットから渡されます。jspは。を与えますNullPointerException

employeesかどうかを確認してみましたarr_sizenull、何も変わりません。

ありがとう。

4

2 に答える 2

3

配列自体がnullでなくても、nullになる可能性は十分にあり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の外部にロジックを移動することをお勧めします...

于 2010-01-10T13:24:41.900 に答える
0

あなたがまだチェックしていないことがわかるのは、employees配列の要素だけです。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 に答える