データベースを検索してEnterを押すとすべてのギグが表示され、各ギグの後にEDITとDELETEのボタンがあるページを作ろうとしています私は正しい機能を追加します。データベースエントリを扱うためのJSPページの準備
私はこれまで押されているボタンのプリントアウトと、IDフィールドが正しく転送されるかどうかを確認するテストを行っています。特定のギグを検索してその結果を検索すると、いずれかのボタンをクリックすると、正しいEDIT 3、DELETE 2が表示されます。
たとえば、そのギグの種類によって異なります。しかし、ページ全体がすべてのギグを表示すると、私はギグのボタンを押すと、私はいつもEDIT 1、DELETE 1を印刷するので、クリックしたIDにかかわらず常にIDを1に設定します。リクエストオブジェクトの
<%
if(request.getAttribute("gigs")==null){
response.sendRedirect("searchGig");
return;
}
%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="bean.Gig"%>
<jsp:useBean id="gigs" type="java.util.ArrayList<Gig>" scope="request" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Gigplanner</title>
<link href="gigplanner.css" rel="stylesheet">
</head>
<body>
<form id="msform" action="searchGig" method="post">
<!-- progressbar -->
<ul id="progressbar">
<li><a href="index.jsp">Front Page</a></li>
<li><a href="addGig.jsp">Add Gig</a></li>
<li class="active"><a href="searchGig.jsp">Search Gigs</a></li>
<li><a href="settings.php">Settings</a></li>
</ul>
<fieldset>
Search Gig:
<input type="text" name="hakusana" value="" >
<input type="submit" class="show-button" value="Search" >
<br>
<div class="showgig">
<%
for(int i=0;i<gigs.size();i++){
out.print("<table>");
out.print("<tr><td>Title:");
out.print("<td>" +(gigs.get(i).getTitle()+ "</td>"));
out.print("<tr><td>Venue:");
out.print("<td>" +(gigs.get(i).getVenue()+ "</td>"));
out.print("<tr><td>Date:");
out.print("<td>" +(gigs.get(i).getDate()+ "</td>"));
out.print("<tr><td>Time:");
out.print("<td>" +(gigs.get(i).getTime()+ "</td>"));
out.print("<tr><td>Country:");
out.print("<td>" +(gigs.get(i).getCountry()+ "</td>"));
out.print("<tr><td>Address:");
out.print("<td>" +(gigs.get(i).getAddress()+ "</td>"));
out.print("<tr><td>Postcode:");
out.print("<td>" +(gigs.get(i).getPostcode()+ "</td>"));
out.print("<tr><td>City:");
out.print("<td>" +(gigs.get(i).getCity()+ "</td>"));
out.print("<tr><td>Description:");
out.print("<td>" +(gigs.get(i).getDescription()+ "</td>"));
out.print("<input type='hidden' name='id' value="+(gigs.get(i).getId()+">"));
out.print("<tr><td><input type='submit' name='act' class='show-button' value='edit'></td>");
out.print("<td><input type='submit' name='act' class='show-button' value='delete'></td>");
out.print("</tr></table><br>");
}
String act = request.getParameter("act");
String id = request.getParameter("id");
if (act == null) {
//no button has been selected
} else if (act.equals("delete")) {
//delete button was pressed
out.print("DELETE " + Long.valueOf(id));
} else if (act.equals("edit")) {
//edit button was pressed
out.print("EDIT " + Long.valueOf(id));
} else {
//something else
}
%>
</div>
</fieldset>
</form>
<br />
</body>
</html>
このすべてのout.printの使用を避けてください。 Jspはビュー技術です。あなたのコードをHTMLのようにリファクタリングして、あなた自身の誤りを是正するかもしれません。 –