JavaJSP通过JavaBean中的ArrayList循环
我正在使用servlet和JSP以及Javabean来创建一个简单的投票系统。我有一个JavaBean助手类(这是一个分配要求),它获取一个用户cookies,其中包含投票选择,汇总每个候选人的投票,用所有这些信息创建一个新的候选人对象,并将候选人对象存储在JavaBean中的ArrayList中。我遇到的问题是,我似乎无法循环通过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中的arraylist在CalculationBean上填充。calculateResults(请求)调用。我在eclipse中使用了调试器来确保这一点
我还在scriptlet中进行了尝试,创建了一个新的ArrayList,并使用getCandidateList()方法获取列表,然后请求。setAttribute(“候选列表”,arrayList);并尝试使用“候选列表”在forEach中查找项目,但这似乎也不起作用
如果有人能帮我或向我解释我做错了什么,那就太好了,谢谢
编辑#1
我还忘了提到打印出来的是
考生成绩偏好 ${current.name}${current.score}
但是数组列表中有5个候选项,因此如果循环代码正常工作,是否应该将${current.name}${current.score}打印5次而不是1次
编辑#2
我还刚刚确认,我可以在普通java中使用scriptlet来实现这一点,下面的代码可以代替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>");
}
%>
# 1 楼答案
因为这条线:
我猜:
# 2 楼答案