在JSP中迭代List对象

我正在研究一个项目,试图教自己弹簧和支柱。 我目前停留在JSP页面上。 我有一个带变量eid的pojo类和带有getter / setter的ename,我在sql中也有一个表,其中包含六个填充行的相同值。
我通过JdbcTemplate访问我的数据库并将结果存储在列表中,然后我将此列表传递给我的操作页面,我将其设置为request.setAttribute("empList",eList) 。 在我的jsp页面中,我调用该属性,然后尝试使用JSTL迭代它。
但是没有任何显示,我知道我的列表变量中包含数据,因为我使用表达式标签检查它,对象显示如下:

 [org.classes.database.Employee@d9b02, org.classes.database.Employee@13bce7e, org.classes.database.Employee@171cc79, org.classes.database.Employee@272a02, org.classes.database.Employee@137105d, org.classes.database.Employee@1359ad] 

我想也许我在jstl上遗漏了一些东西,但我的META-INF/lib文件夹中有jstl-1.2。 我也尝试在配置路径文件中添加它,但仍然没有。 我也有正确的标签url。
当我做一个简单的 。 你好打印出来。 所以这让我相信我的jstl工作正常,但是当我尝试使用jstl遍历我的列表时,根本没有任何显示。

无论如何这里是我的JSP页面:

         Employee Details    

Employee Details


Employee ID: Employee Pass:

任何帮助将非常感谢!

在自学Spring和Struts之前,你应该学习Java。 像这样输出

 org.classes.database.Employee@d9b02 

Object#toString()方法的结果,所有对象都从Object类inheritance,这是Java中所有类的超类。

List子类通过迭代所有元素并在那些元素上调用toString()来实现它。 但是,您似乎没有在Employee类中实现(覆盖)该方法。

你的JSTL在这里

   Employee ID:  Employee Pass:    

除了您没有名为eList的页面,请求,会话或应用程序范围属性之外,这样做eList

你需要添加它

 <% List eList = (List)session.getAttribute("empList"); request.setAttribute("eList", eList); %> 

或者在forEach使用empList属性。

   Employee ID:  Employee Pass:    

将代码更改为以下内容

 <%! List eList = (ArrayList)session.getAttribute("empList");%> ....  <% for(int i=0; i  <%}%> 
<%= ((Employee)eList[i]).getEid() %> <%= ((Employee)eList[i]).getEname() %>

你可以直接在forEach标签中读取empList 。试试这个

   
Employee ID: Employee Pass:

在迭代包含Maps的ArrayList时,只有scriplets的另一个例子。

 <% java.util.List> employees=(java.util.List>)request.getAttribute("employees"); for (java.util.Map employee: employees) { %>  "/>  ... <%}%> 
    Employee ID:  Employee Pass: