2010-04-30 251 views
2

我有一個JSP需要會話對象中的Arraylist並從中刪除項目。當我導航到該頁面時,它看起來工作正常,然後無處可逃,該頁面是空白的。我檢查Tomcat的日誌文件,並在catalina.out中我收到一個JasperException的它顯示了它作爲是對符合下列JasperException的可能原因是什麼

for(int i; i < agentItems.size(); i++) 

agentItems是我使用的ArrayList的名稱。我一直在調試它,似乎無法弄清楚問題可能是什麼。我已經讀過JasperException是作爲JSP的NullPointerException引發的一些問題。這是真的還是我完全忽略了這個問題?

我有在本地機器和中間服務器上運行的Web應用程序用於開發,其中兩者都沒有問題。爲什麼只有在這臺服務器上纔會出現問題?

回答

3

那可以是一切都是。您需要在堆棧跟蹤中進一步觀察,查看caused byroot cause部分以及之後的跟蹤。這可能是由許多事情造成的。 JSP基本上被編譯成一個大的try塊,任何捕獲的Throwable將被包裝到Tomcat和克隆中的servletcontainer特定異常,如JasperException。它歸結爲:

try { 
    // All translated JSP code comes here. Max 64K. 
} catch (Throwable t) { 
    throw new JasperException(t); 
} 

檢查.java文件名中的堆棧跟蹤的第一線,在work目錄servletcontainer的定位這一點,並在編輯器中打開該文件。你看到了嗎?

也就是說,使用scriptletsbad practice。使用Servlets來控制/預處理/後處理請求,使用Javabeans來表示數據模型,在JSP中使用Taglib來控制頁面流和輸出,在JSP中使用表達式語言(EL)來訪問後端數據。在您的具體情況中,您可以使用JSTL的c:forEach標籤遍歷數組或List。當JSP是不能夠訪問它從外部獲取的元素或項目

<c:forEach items="${agents}" var="agent"> 
    <p>Agent: ${agent.name} 
</c:forEach> 
0

jasperexception,也可能發生在這裏它也許是無法訪問agentItems。嘗試提供完全合格的類名稱,否則請導入包。

相關問題