这个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,]]
你的代码真的没有意义:
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)
| 归档时间: |
|
| 查看次数: |
2240 次 |
| 最近记录: |