一、错误提示
javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:274)
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:238)
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:155)
at javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:256)
二、错误原因
在jsp中用c:foreach 遍历集合的时候出现这个错误,意思是无法遍历items里边的对象。
此时要去对应的servlet里面检查一下,传到jsp页面的参数是不是集合属性的参数,应该是传的参数类型不对引起的。
三、改正
如果要改正这个错误,只需把那一行改成 <c:forEach items="${datas}" var=“idinfo”> 即可。必须保证datas 是一个 List 。
在对应的Servlet中,datas应该是一个list集合。
@WebServlet("/index")
public class ListServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1.查询数据库读取数据
FileDaoImpl fileDao = new FileDaoImpl();
// 2.把数据存放到request作用域
req.setAttribute("datas", fileDao.getAll());
// 3.转发到jsp
// 将这个jsp页面放在WEB-INF下,防止用于直接访问jsp页面,因为直接访问是没有数据的
req.getRequestDispatcher("WEB-INF/index.jsp").forward(req, resp);
}
}