如何在JSP中显示列表?

Nor*_*gey 1 jsp hibernate

这个Servlet,我在彩色车上做GROUP BY.插入请求并在jsp中做广告,但它不会转换.

    Query query = session.createQuery("select count(carColor), carColor from Cars group by carColor order by carColor");
    List<Cars> list = query.list();
    Iterator iter = list.iterator();
    while (iter.hasNext()) {
        Object[] obj = (Object[]) iter.next();
        System.out.println(obj[0] + "  " + obj[1]);

    }

    request.setAttribute("list", list); 

    RequestDispatcher rd = request.getRequestDispatcher("test.jsp");
    rd.forward(request, response);
Run Code Online (Sandbox Code Playgroud)

控制台:2白色10黑色5蓝色

JSP:[[Ljava.lang.Object; @ 1f3b536,[Ljava.lang.Object; @ fdffb1,]]

JB *_*zet 5

你的代码真的没有意义:

List<Cars> list = query.list();
Run Code Online (Sandbox Code Playgroud)

在上面一行中,您声明您的列表是汽车列表(它不是)

Iterator iter = list.iterator();
while (iter.hasNext()) {
    Object[] obj = (Object[]) iter.next();
Run Code Online (Sandbox Code Playgroud)

然后迭代列表,并将每个元素转换为Object[].汽车实例怎么可能成为一个Object[]?该列表应声明为List<Object[]>,您不应使用原始类型.你的循环应该写成

Iterator<Object[]> iter = list.iterator();
while (iter.hasNext()) {
    Object[] obj = iter.next();
Run Code Online (Sandbox Code Playgroud)

或者,甚至更简单:

for (Object[] obj : list) {
Run Code Online (Sandbox Code Playgroud)

现在,在JSP中,我怀疑你只是${list}用来显示列表.这只是调用列表上的toString()方法,该方法本身调用每个元素的toString()方法.由于每个元素都是一个Object[],结果字符串是[Ljava.lang.Object;@1f3b536,这意味着"具有hashCode 1f3b536的Object数组".

要显示列表的元素,您应该遍历列表,因为您必须在Java代码中执行此操作:

<c:forEach var="array" items="${list}">
    Count: ${array[0]} - Color: <c:out value="${array[1]}"/> <br/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)