<c:foreach>标签无法正确评估arraylist元素</c:foreach>

时间:2014-09-17 16:12:49

标签: jsp servlets

我无法获取arraylist中的元素,但我可以将student对象输出为整个字符串。有什么想法吗?

我的Servlet页面:

ArrayList<Student> students = Dao.getStudentList();
HttpSession session = request.getSession();
session.setAttribute("students", students);

我有一个Dao类连接到mySql数据库,我还在类中全局定义静态Arraylist来存储学生对象。

我的JSP页面:

<%
    ArrayList<Student> list = new ArrayList<Student>();
    if (request.getSession().getAttribute("students") != null) {
        list = (ArrayList ) request.getSession().getAttribute("students");
        }
    else {
        System.out.println("List is empty, Please insert new data");
    }

%>


    <table border="1" style="width: 800px">
                <tr>
                    <th>ID</th>
                    <th>Name</th>
                    <th>Age</th>
                    <th>Date of joined</th>
                    <th>Primary Address</th>
                    <th>Secondary Address</th>
                </tr>
            <c:set var="list"  scope="session">
                    <%= list %>
            </c:set> 
            <c:forEach items="${list}" var="lists">
                 <tr>   
                    <td>${lists.id}</td>
                    <td>${lists.name}</td>
                    <td>${lists.age}</td>
                    <td>${lists.doj}</td>
                    <td>${lists.address1}</td>
                    <td>${lists.address2}</td>      
                 </tr>
            </c:forEach>
    </table> 

如果我这样做

<c:forEach items="${list}" var="lists">
             <tr>   
                        <td>${lists}</td>
             </tr>
</c:forEach>

将对象输出为字符串。但这不是我想做的。我想输出所有带有相应元素的学生对象作为表格格式。

2 个答案:

答案 0 :(得分:0)

您是否会对Display Tags感兴趣?他们为您提供所需的一切以及更多。 让我们说我们考虑您的标签的数据:

<display:table id="data" name="sessionScope.students">
    <display:column property="id" title="ID" sortable="true"/>
    <display:column property="name" title="Name" sortable="true"/>
    <display:column property="age" title="Age" sortable="true"/>
    <display:column property="doj" title="Date of joined" sortable="true"/>
</display:table>

这些标签将为您提供一个表格,可以在其他功能中包含可排序的列,分页和自定义样式。

答案 1 :(得分:0)

相反,您可以尝试这样的事情:

<c:forEach items="${sessionScope.students}" var="student">
   <tr>   
    <td>${student.id}</td>
    <td>${student.name}</td>
    <td>${student.age}</td>
    <td>${student.doj}</td>
    <td>${student.address1}</td>
    <td>${student.address2}</td>      
   </tr>
</c:forEach>

并确保您的getter方法名称与您的变量名称匹配(例如变量&#34; id&#34;应该有getId()方法)。

相关问题