2017-06-21 143 views
0

这里是我的代码 - 这是使用提供的属性(候选人)的JSP文件:JSP - 巴顿在ForEach循环中的每个条目

<% ArrayList<Candidate> candidates = (ArrayList<Candidate>) request.getAttribute("candidates"); %> 

    <% for (int i = 0; i<candidates.size(); i++) { %> 
<table> 
    <tr> 
     <td><b>Imię</b></td> 
     <td> <%= candidates.get(i).getFirstName() %></td> 
    </tr> 
    <tr> 
     <td><b>Nazwisko</b></td> 
     <td> <%= candidates.get(i).getLastName() %> 
</td> 
    </tr> 
    <tr> 
     <td><b>PESEL</b></td> 
     <td> <%= candidates.get(i).getPESEL() %> 
</td> 
    </tr> 
    <tr> 
     <td><b>Płeć</b></td> 
     <td><%= candidates.get(i).getSex() %> 
</td> 
    </tr> 
    <tr> 
     <td><b>Miasto</b></td> 
     <td><%= candidates.get(i).getCity() %> 
</td> 
    </tr> 
    <tr> 
     <td><b>Adres</b></td> 
     <td><%= candidates.get(i).getAddress() %> 
</td> 
    </tr> 
    <tr> 
     <td><b>Numer kontaktowy</b></td> 
     <td><%=candidates.get(i).getContactNumber() %> 
</td> 
    </tr> 
    <tr> 
     <td><b>Adres e-mail</b></td> 
     <td><%= candidates.get(i).getEmailAddress() %> 
</td> 
    </tr> 
    <tr> 
     <td><b>Umiejętności</b></td> 
     <td><%= candidates.get(i).getExperiences() %> 
</td> 
    </tr> 
</table> 
<br> 
<form action="JobOfferServlet" method="post"> 
<% Integer id = candidates.get(i).getId(); %> 
<input type="hidden" name="candidateId" value="<%= id%>"> 
    <button type="submit" name="option" value="listMatching">Znajdz oferty pracy dla 
<%= candidates.get(i).getFirstName()%> <%= candidates.get(i).getLastName()%></button> 
    <br><br> 
<% } %> 

我试图在这里做:我想 显示每从候选人候选人ArrayList中另外 - 为每个条目添加指定按钮,这些按钮将转发候选人ID以及指定Servlet类中所需结果的选项参数。

问题是,无论点击哪个按钮,发送ID始终为1 - 即使每个候选人都正确地打印在浏览器中,即使在按钮的标签上,也会为列表中的第一个候选人执行操作...

首先,我尝试使用ForEach JSP循环,当使用基本For循环但效果相同时 - 总是使用第一个候选。

我该如何让它工作?

+1

我在循环中看不到表格结束标记()。你有吗?因为这样,只有一种形式被创建。 –

+0

@GurkanYesilyurt OMG。我不能相信我错过了这一点。你说得对,我忘记了表格结束标记。我可能会在重构该类之后意外删除它,并将它归咎于愚蠢的JSP脚本语句中......原来我是那个愚蠢的人。感谢队友,我真的很感激它,因为我被困在这个问题2晚。 –

+0

不客气。如果您将我的答案标记为已接受,我会很高兴。 –

回答

0

你需要一个表格在你的循环中结束标记</form>。否则,只会创建一个表单,并且在所有情况下都会提交相同的值。

0

您是在一个循环中创建元件candidateId的相同ID

可以将按钮从环

删除形式设置相关ID的值的循环和的onclick之外创建它和id属性添加到它

<form action="JobOfferServlet" id="JobOfferServlet" method="post"> 
<input type="hidden" name="candidateId" id="candidateId"/> 

并添加按钮onclick属性

onclick="document.getElementById('candidateId').value='<%=candidates.get(i).getId()%>';document.getElementById('JobOfferServlet').submit();"