【发布时间】:2016-06-07 14:04:17
【问题描述】:
我正在使用带有 JSP 和 Javabean 的 Servlet 来创建一个简单的投票系统。我有一个 JavaBean 帮助器类(这是一个分配要求),它获取一个包含投票选择的用户 cookie,计算每个候选人的投票,创建一个包含所有信息的新候选人对象,并将候选人对象存储在 ArrayList 中JavaBean。我遇到的问题是我似乎无法遍历该 ArrayList 以输出每个候选人的信息。我一直在谷歌上搜索并查看 StackOverflow 几个小时,但我没有尝试过任何工作。
到目前为止,我有以下内容
结果.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:useBean id="CalculationBean" class="beans.CalculationBean" scope="session"/>
<% CalculationBean.calculateResults(request); %>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ishka Election - Results so Far</title>
</head>
<body>
<h1>Ishka Election - Results so Far</h1>
<table>
<th>Candidate</th>
<th>Score</th>
<th>Preference</th>
</table>
<c:forEach items="${CalculationBean.getCandidateList()}" var="current">
<tr>
<td><c:out value="${current.name}"/></td>
<td><c:out value="${current.score}"/></td>
</tr>
</c:forEach>
</body>
</html>
这只是输出一个带有表格标题的页面,然后是“${current.getName()}”和 getScore,它不会打印出对象中的值。
CalculationBean 中的数组列表在 CalculationBean.calculateResults(request) 调用中填充。我已经在 Eclipse 中使用了调试器来确保这一点。
我也尝试过在 scriptlet 中创建一个新的 ArrayList 并使用 getCandidateList() 方法获取列表,然后 request.setAttribute("candidateList",arrayList);并尝试使用“candidateList”获取 forEach 中的项目,但这似乎也不起作用。
如果有人可以帮助或向我解释我做错了什么,那就太好了,谢谢。
编辑#1
我也忘了说打印出来的是
考生分数偏好 ${current.name} ${current.score}
但是数组列表中有 5 个候选项,所以如果循环代码正常工作,是否应该将 ${current.name} ${current.score} 打印 5 次而不是 1 次?
编辑#2
我也刚刚确认我可以使用 scriptlet 在普通 java 中执行此操作,以下代码代替 forEach 标记代码有效,但我知道现在不赞成使用 scriptlet。
<%
ArrayList<Candidate> list = CalculationBean.getCandidateList();
for(Candidate c : list){
out.print("<tr><td>"+c.getName()+"</td>");
out.print("<td>"+c.getScore()+"</td></tr>");
}
%>
【问题讨论】:
-
在 JSTL 中,您不能打印这样的方法。意思是
getName()不是一个有效的东西,所以它什么也不打印。试试${current.name} -
这也行不通,我还在原始帖子的末尾添加了更多信息。
-
你能发布你的java文件吗?我认为这对我和其他人也会有所帮助
-
停止 jsp:useBean。停止小脚本。停止 ${bean.method()}。使用小服务程序。使用 EL。使用 ${bean.property}。有关正确方法的启动示例,请参阅副本(不要忘记在那边的答案中查看链接,我们有非常好的基本主题的 wiki 页面)
标签: java jsp servlets arraylist javabeans