我正在使用带有JSP和Javabean的Servlet创建一个简单的投票系统。我有一个JavaBean帮助程序类(它是一个赋值要求),它获取用户cookie,其中包含投票选项,计算每个候选人的投票,创建一个包含所有信息的新候选对象,并将候选对象存储在ArrayList中JavaBean。我遇到的问题是我似乎无法遍历该ArrayList来输出每个候选人的信息。我已经谷歌搜索并在StackOverflow上查看了几个小时,但我没有尝试过任何工作。
到目前为止我所拥有的是以下内容
Results.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>
这只输出一个带有表格标题的页面,然后输出&#34; $ {current.getName()}&#34;和getScore一样,它不会打印出来自对象的值。
CalculationBean中的arraylist填充在CalculationBean.calculateResults(request)调用上。我在eclipse中使用了调试器来确保这一点。
我还尝试过一个scriptlet,创建一个新的ArrayList并使用getCandidateList()方法获取列表,然后使用request.setAttribute(&#34; candidateList&#34;,arrayList);并使用&#34; candidateList&#34;尝试forEach中的项目。但这似乎也不起作用。
如果有人可以帮助或向我解释我做错了什么,那就太好了,谢谢。
编辑#1
我也忘了提到打印出来的是
候选人得分偏好 $ {current.name} $ {current.score}
但是数组列表中有5个候选项,所以如果循环代码正常工作,那么$ {current.name} $ {current.score}应打印5次而不是1次?
编辑#2
我也刚刚确认我可以使用scriptlet在普通java中执行此操作,以下代码代替for 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>");
}
%>
答案 0 :(得分:0)
<c:forEach items="${CalculationBean.CandidateList}" var="current">
试试这个并为列表设置getter setter。
答案 1 :(得分:0)
因为这一行:
<c:forEach items="${CalculationBean.getCandidateList()}" var="current">
我想:
<c:forEach items="${CalculationBean.candidateList}" var="current">
<tr>
<td><c:out value="${current.name}"/></td>
<td><c:out value="${current.score}"/></td>
</tr>