我一直在試圖解決這個很長一段時間。不知道我哪裏錯了。 我顯示數據庫中的網站列表,其中每個網址都有唯一的ID(我將它們保存爲隱藏字段)。隱藏字段是否始終提交項目列表中的第一個值?
for(int i = 0; i < favoriteList.length; i++) {
String url = favoriteList[i].getUrl();
out.println("<tr>");
out.println("<td>");
out.println(" <form id=\"countForm\" method=\"POST\">");
out.println(" <input type=\"hidden\" name=\"favoriteID\" value=\""
+ favoriteList[i].getFavoriteId() + "\" />");
out.println("<a"
+ " href =\" javascript:document.countForm.submit();\""
+ " onclick=\"document.getElementById('countForm').submit();\"" + " />" + url + "</a>");
out.println("</form>");
out.println("</td> <tr> <td>");
out.println("<p>" + favoriteList[i].getComment() + "</p>");
out.println("</td></tr> <tr><td>");
out.println("<p>" + favoriteList[i].getClickCount() + "</p>");
out.println("</td></tr>");
}
網站列表顯示正確。但是,在點擊一個URL之後,表單應該被提交併且URL的計數應該增加(基本上,試圖計算點擊次數)。每當我嘗試從String updateAction = request.getParameter("favoriteID");
獲取URL的ID(來自隱藏字段)時,第一個鏈接的ID(1)正在被讀取。不知道我是否做對了。
編輯: 我明白,編寫servlet是一個壞主意,但是這是不是JSP或其他替代品的功課,在那裏我必須使用servlet。
請注意,編寫像這樣的servlet對於現實世界中的任何事物都是一個壞主意。相反,使用單獨的模板(如JSP或Thymeleaf),然後提供一個模型(例如,從數據庫中檢索'favoriteList')。 – chrylis
在你的第4條語句之後添加這個'System.out.println(「value:」+ favoriteList [i] .getFavoriteId());'並檢查值是否設置正確。即0,1,2,3 ...如果不是,那麼你可能爲FavoriteId設置了相同的值。 –
@RohitGaikwad,是的,我通過運行for循環測試了這些值。這些ID是唯一的。正如Andreas所說,問題在於所有的表單(對於每個鏈接)都有相同的ID。 –