2012-04-02 1 views
0

Ich versuche, eine Liste von Mitgliedern des Typs Party, und ihre Mitglieds-ID zu einer Update-Seite verknüpfen, die automatisch die Mitglieds-ID der geklickt erhält .MVC - Senden Wert eines Feldes mit Anfrage/Sitzung über eine JSP

Ich habe bereits Code in das Servlet geschrieben, um eine Ansicht aller Mitglieder anzuzeigen, wobei jede ihrer IDs mit einer Seite namens UpdateParty.jsp verknüpft ist, aber was ich will ist, dass die ID mit übergeben wurde die Anfrage, damit sie in der UpdateParty.jsp als Parameter verwendet werden kann, damit der Benutzer sie nicht eingeben muss.

Ich benutze postgres für meine SQL wenn jemand wissen will.

Servlet-Code, der eine Liste aller Parteimitglieder produziert:

else if (request.getParameter("listallmembers") != null) { 
        try { 

         User sessionuser = (User) session.getAttribute("User"); 
         String u = sessionuser.getUsername(); 
         ArrayList<Party> p = new ArrayList<Party>(); 
         ResultSet rs = this.findAllMembers(u); 

         while (rs.next()) { 
          Party party = new Party(); 

          party.setMemberID(rs.getString("memberID")); 
          party.setPartyFirstname(rs.getString("partyFirstname")); 
          party.setPartySurname(rs.getString("partySurname")); 
          party.setUsername(rs.getString("username")); 

          p.add(party); 
         } 

         request.setAttribute("members", p); 
         request.getRequestDispatcher("ViewPartyMembers.jsp").forward(request, response); 
        } catch (Exception e) { 
         out.print(e); 
         e.printStackTrace(out); 
        } 

-Code für ViewPartyMembers.jsp:

<%@page import="HolidayExchange.Party"%> 
<%@page import="HolidayExchange.User"%> 
<%@page import="java.util.List"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>All Party Members</title> 
    </head> 
    <body> 
     <h1>View Party Members</h1> 



     <% 
     List<Party> l = (List<Party>) request.getAttribute("members"); 

     if(l!=null){ 
      out.println("<table>"); 
      out.println("<tr><th>Member ID</th><th>Firstname</th><th>Second Name</th><th>Associated User</th></tr>"); 
      for(int i = 0; i < l.size();i++){ 
        out.println("<tr><td>"+ l.get(i).getMemberID() + 
          "</td><td><a href='UpdateParty.jsp'>"+ l.get(i).getPartyFirstname() + 
          "</a></td><td>"+ l.get(i).getPartySurname() + 
          "</td><td>" + l.get(i).getUsername() + "</td>"); 
        out.println("</tr>"); 
      } 
      out.println("</table>"); 
     }else{ 
     %> 

     <form action="PartyServlet" method="get"> 
      <input type="hidden" name="listallmembers" value="1" /><br /> 
      <input type="submit" value="Show all Members" /> 
     </form> 

     <% 

     } 
     %> 



    </body> 
</html> 

Antwort

0

Wenn Sie wollen, dass die ID auf der UpdateParty verfügbar sein .jsp Ihr ​​Link sollte folgendermaßen aussehen:

<a href='UpdateParty.jsp?id=" + l.get(i).getMemberID() + "'>"+ l.get(i).getPartyFirstname()"</a> 

Die ID-Eigenschaft wird also in der JSP als Anforderungsparameter verfügbar sein.

Wie dem auch sei, empfehle ich Ihnen nicht scriptlet in Ihrer JSP verwenden und stattdessen

+0

Idealerweise möchte ich alles über den Controller machen, jedoch war ich mir nicht sicher, wie man den Wert des verlinkten Textstückes auf das Update-Servlet übergibt, ohne direkt an dem verlinkten Feld zu arbeiten. – Jimmy

+0

Auch sollte dieser Code ersetzen 'l.get (i) .getMemberID() +' – Jimmy

+0

Verwenden Sie einen Link, um ID an die JSP/Contoller übergeben ist kein schlechter Ansatz. – jddsantaella

1

Hier ist etwas mehr gesund für Sie direkt zu einem JSP Punkt zu einem Controler/Aktion zeigen. Es verwendet die JSTL-Ausdruckssprache und die Tag-Bibliothek.

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>All Party Members</title> 
    </head> 
    <body> 
     <h1>View Party Members</h1> 

    <c:if test="${!empty members}"> 
     <table> 
      <tr><th>Member ID</th><th>Firstname</th><th>Second Name</th><th>Associated User</th></tr> 
      <c:forEach items="${members}" var="member"> 
       <tr><td>${member.memberID}</td> 
       <c:url value="link" value="UpdateParty.jsp"> 
        <c:param name="memberId" value="${member.memberID}"/> 
       </c:url> 
       <td><a href="${link}">${member.partyFirstname}</a></td> 
       <td>${member.partySurname}</td> 
       <td>${member.username}</td> 
       </tr> 
      </c:forEach> 
     </table> 
    </c:if> 
    <c:if test="${empty members}"> 
     <form action="PartyServlet" method="get"> 
      <input type="hidden" name="listallmembers" value="1" /><br /> 
      <input type="submit" value="Show all Members" /> 
     </form> 
    </c:if> 
</body> 
</html> 
Verwandte Themen