質問

私はハンドルをcouldntの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サーブレットから渡され、I JSPはNullPointerExceptionを与えます。

私はemployeesarr_sizenullかではなく、それは何も変更しない場合はチェックしてみました。

感謝ます。

役に立ちましたか?

解決

配列自体が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外のロジックを移動することをお勧めしたい...

他のヒント

私はあなたがまだチェックしていないことを確認することができます彼らは唯一のものは、あなたの従業員の配列の要素です。 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