通过JSTL在JSP页面上显示ArrayList

时间:2011-03-22 21:36:09

标签: java jsp jstl

有人可以帮我弄清楚我做错了什么吗?我有一个类,其方法返回一个ArrayList,我无法让它显示在我的JSP页面上。这是我的代码:

//java class
public class Confirmation {
ArrayList<Criterion> criterion = null;
ArrayList<String> criterionTitles = null;
EvaluationDefinition eval = null;

public ArrayList<String> getCriterionTitles() {
    criterion = new ArrayList<Criterion>();
    criterionTitles = new ArrayList<String>();

    for(int i = 0; i < eval.getGroups().get(0).getCriterionCount(); i++ )
    {
       criterion.add(eval.getGroups().get(0).getCriterion().get(i));
       criterionTitles.add(i, criterion.get(i).getTitle());
    }
    return criterionTitles;
}  
}
//jsp page code...
<jsp:useBean id="criterionTitles" scope="page" class="Confirmation" />
// ERROR MSG HERE: Error reading 'criterionTitles' on type Confirmation
<c:forEach var="title" items="${criterionTitles.criterionTitles}">
 <c:out value="${title}" />
</c:forEach>

如果我在servlet中运行for循环逻辑并且只运行out.println(criterion.get(i).getTitle()它就会打印好标题。就在我运行c:foreach循环的时候错误。谢谢。

1 个答案:

答案 0 :(得分:0)

  

在确认类型

上读取'criterionTitles'时出错

调用getCriterionTitles()引发了异常。我对NullPointerException的赌注是因为evalnull。读取服务器日志以获取完整的堆栈跟踪,跟踪代码中的根本原因并相应地修复它。


与具体问题无关,将类放在默认包中是个坏主意。它只能在特定的servletcontainer / JVM配置上使用,但不是全部。在包内的普通Java类中,默认包中的import类是不可能的。一些servletcontainers为此建立了变通方法,以便“noob-friendly”。但你不应该依赖它。