我试图从一个servlet返回数据库搜索结果的ArrayList,以显示在jsp页面上.
将arraylist设置为servlet中的请求的地址,并将请求转发到jsp页面.当我尝试在jsp页面上检索它时,它会给出以下错误:
"java.util.Vector无法强制转换为java.util.ArrayList"
servlet代码:
ListResultList=SearchPartsDAO.displaySearchResults(car); if(ResultList.size()>=1){ request.setAttribute("ResultList", ResultList); request.getRequestDispatcher("SearchResults.jsp").forward(request, response); }else response.sendRedirect("NotFound.jsp");
JSP:
<% ArrayListresultList = new ArrayList (); resultList=(ArrayList )request.getAttribute("ResultList"); %> <%System.out.println(resultList.get(0).getCarMake());%>
Jon Skeet.. 6
你没有展示你的displaySearchResults
方法,但听起来像是返回一个Vector
而不是一个ArrayList
.但从根本上说,你不应该关心它返回的实现 - 如果你只是强制转换List
,你应该没问题:
<% ListresultList = (List ) request.getAttribute("ResultList"); %> <%System.out.println(resultList.get(0).getCarMake());%>
请注意我是如何删除空的初始赋值ArrayList
- 如果你立即为变量分配一个新值,这是毫无意义的.
在集合界面方面工作比具体类更清晰 - 而且你已经在第一段代码中做到了这一点.这仅要求返回值的工具List
,所以你应该只具有相同的要求时,你处理相同的值更高版本.
同样值得理解的是,你的演员List
阵容有些不安全,因为它只是真正的演员List
,因为缺乏具体的仿制品.ClassCastException
当您访问各个元素时,如果它们变成某些非Car
引用,您仍然可以获得更晚的元素.不幸的是,你不能做很多事情.