2016-05-08 19 views
2

データベースを検索して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> 
+0

このすべてのout.printの使用を避けてください。 Jspはビュー技術です。あなたのコードをHTMLのようにリファクタリングして、あなた自身の誤りを是正するかもしれません。 –

答えて

1

getParameter()方法はは、多くのHTML要素に共通であってもよいHTML要素の名前に依存しています。

この場合、メソッドは他の要素を考慮せずに、関連付けられたその名前の最初の要素をフェッチします。

特定のギグを検索すると、おそらくページに要素が1つしかないため、IDを間違って取得する方法はなく、すべてがページにあるときに期待される結果が得られません。

あなたはgetParameterValues()を使用して、(同じ名前の属性が異なる値を持つことになり、それぞれがそれぞれのギグに関連するチェックボックスを使用して、インスタンスのために)興味のある特定の値を取得する方法を見つける必要があります各ギグのためにform要素を作成してください。

関連する問題