2012-04-13 5 views
2

Ich habe die nächste JSP-Datei namens Bookstore.jsp, in der ich eine Tabelle mit Daten aus einer Datenbank gefüllt.Holen Sie sich ausgewählte Zeilen aus einer HTML-Tabelle mit Servlets und JSP

<% 
ArrayList<Book> b = new ArrayList<Book>(); 
b = SqlSentencesList.showCatalog(); // this method returns an arrayList with all books 
%> 

<form method="get" action="ShoppingCarController"> 
    <table border="2"> 
     <tr> 
      <th>ISBN</th> 
      <th>Title</th> 
      <th>Author</th> 
      <th>Price</th> 
      <th>Select</th> 
     </tr> 

     <%for(int i=0; i<l.size();i++){%> 
      <tr> 
       <td> <%out.print(b.get(i).getIsbn());%> </td> 
       <td> <%out.print(b.get(i).getTitle());%> </td> 
       <td> <%out.print(b.get(i).getAuthor());%> </td> 
       <td> <%out.print(b.get(i).getPrice());%> </td> 
       <th> <input type="checkbox" name="checkboxGroup" value="<%Integer.toString(i);%>"/> </th> 
      </tr> 
     <% } %> 
    </table> 
    <input type="submit" value="Add to shopping car"/> 
</form> 

Nun, ich brauche die gleichen Buchdaten (ISBN, Titel, Autor und Preis) in der Servlets, sondern nur von den ausgewählten.

Dies ist meine Methode doGet von ShoppingCarController Servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     ArrayList<Book> shoppingCar = new ArrayList<Book>(); 

     String[] values = request.getParameterValues("checkboxGroup"); 

     for(int i=0; i<values.length; i++) { 
      System.out.println(values[i]); 
     } 
    } 

Ich habe versucht, es gedruckt, um zu sehen, was ich bekommen, aber nichts zeigt in der Konsole auf.

Ich war in diesem Fall ähnlich suchen: How to pass data from selected rows using checkboxes from JSP to the server und ich denke, mein Problem mit den value Attributen, aber ich weiß nicht, die Syntax in dieser Frage verwendete, nicht verstehen, dass for each und die <c:out Tags; Kurz gesagt, ich weiß nicht, wie ich meinen Code anpassen soll, damit er funktioniert.

Jemand geben Sie mir eine Hand damit.

Antwort

2

Ihre jsp sollte somethin wie folgt aussehen (mit dem Servlet-Code, den Sie geschrieben haben)

zuerst bearbeiten Servlets und beinhalten:

ArrayList<Book> shoppingCar = new ArrayList<Book>(); 
request.setAttribute("b", shoppingCar);//accsessed as ${b} in jsp 

in Ihrem jsp haben Sie: -

 <form action="yourserlet" method="POST"> 
       <table> 
        <thead> 
         <tr> 
          <td width="10%">ISBN</td> 
          <td width="30%">TITLE</td> 
          <td width="30%">AUTHOR</td> 
          <td width="20%">SELECT</td> 
         </tr> 
        </thead> 

        <tbody> 

     <c:forEach items="${b}" var="book"> 
       <tr>  
        <td align="left"><input type="text" name="isbn<c:out value="${book.isbn}"/>" disabled="true"/></td>      
        <td align="left"><input type="text" name="title<c:out value="${book.title}"/>" disabled="true"/></td> 
        <td align="left"><input type="text" name="author<c:out value="${book.author}"/>" disabled="true"/></td> 
        <td align="left"><input type="text" name="price<c:out value="${book.price}"/>" disabled="true"/></td> 
        <td align="center"> 
         <input type="checkbox" name="checkboxgroup" 
          value="c:out value="${book.tostring()}"/>"/> 
        </td> 
        </tr> 
      </c:forEach> 
     </tbody> 
       </table> 
      </form> 

Die Sie sollten möglicherweise jquery verwenden, um ein Feld beim Aktivieren eines Kontrollkästchens zu aktivieren oder zu deaktivieren, ich habe sie standardmäßig deaktiviert.

auch zu prüfen:

jQuery - checkbox enable/disable

Getting all selected checkboxes values using ajax and jsp/servlets?

2

In JSP ändern

<input type="checkbox" name="checkboxGroup" value="<%=Integer.toString(i)%>"/> 

ODER

<input type="checkbox" name="checkboxGroup" value="<%=i%>"/> 

wird auch funktionieren. Sie müssen nicht in Zeichenfolgenwerte einbetten.

FYI: Wenn Sie planen, etwas mehr zu tun. Bessere Pass b.get(i).getID() Art der Sache in Parametern. Passing-Sequenz kann falsche Daten ergeben.

+0

Ein Buch hat einen Titel, einen Autor, einen Preis und eine ISBN-Nummer. Ich benutze das, um die Tabelle zu füllen, ich kann die ISBN (das wäre die ID) nur nicht übergeben. –

+0

Ich habe basierend auf Ihrem Servlet-Code-Snippet geantwortet. –

1

Ihre JSP-Code ..

<form method="POST" action="promoteSelected"> 
<table class="table table-striped table-bordered"> 
<thead> 
<tr> 
<th>*</th> 
<th>AdmNo</th> 
<th>Firstname</th> 
<th>Lastname</th> 
<th>Check</th> 
</tr> 
</thead> 
<tbody> 
<% 
if(studentList !=null){ 
    int scount = 1; 
    for(Student stu : studentList){ 
    %> 
<tr> 
<td><%=scount%></td> 
<td><%=stu.getAdmno()%></td> 
<td><%=stu.getFirstname()%></td> 
<td><%=stu.getLastname()%></td> 
<td> 
<div class="checkbox">  
<input type="hidden" name="studentId[]" value="<%=stu.getUuid()%>">  
<label><input type="checkbox" name="studentCheck[]">Check</label> 
</div>    
</td> 
</tr> 
<% 
scount++; 
} } 
%> 

</tbody> 
</table> 
<div class="form-actions"> 
<button type="submit" class="btn btn-primary"> 
<input type="hidden" name="schooluuid" value="<%=accountuuid%>"> 
     Promote 
</button> 
</div> 
</form> 

Sevlet Code ..

String[] studentCheck = {}; 
String[] studentId = {}; 

studentCheck = request.getParameterValues("studentCheck[]"); 
studentId = request.getParameterValues("studentId[]"); 
String schooluuid = StringUtils.trimToEmpty(request.getParameter("schooluuid")); 

for(String str : studentCheck){ 
    System.out.println("studentCheck " + str); 
} 

for(String str : studentId){ 
    System.out.println("studentId " + str); 
} 
System.out.println("schooluuid " + schooluuid);