2017-06-21 137 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();"