2010-04-30 160 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。尝试提供完全合格的类名称,否则请导入包。

相关问题