2012-04-02 7 views
0

私はParty型のメンバーのリストを作成し、そのメンバーIDをクリックしたメンバーIDを自動的に取得する更新ページにリンクしようとしています。MVC - JSPを使用してリクエスト/セッションでフィールドの値を送信する

すべてのメンバーのビューを表示するためにサーブレットにコードを記述しました。そのIDはそれぞれUpdateParty.jspというページにリンクされていますが、クリックしたIDはリクエストをUpdateParty.jspでパラメータとして使用できるようにして、ユーザーが入力する必要がないようにします。

私は誰でも知りたいと思えば私のSQLのためにpostgresを使用しています。すべてのパーティーメンバーのリストを作成

サーブレットコード:ViewPartyMembers.jspため

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); 
        } 

コード:

<%@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> 

答えて

0

あなたはIDがUpdatePartyで利用できるようにしたい場合.jspあなたのリンクは次のようになります:

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

idプロパティは、JSPでリクエストパラメータとして使用できるようになります。

とにかく、私はあなたのJSPでスクリプトレットを使用し、代わりのcontroler /アクション

+0

理想的には、コントローラ経由ですべて行いたいのですが、ハイパーリンクされたフィールドを直接操作することなく、リンクされたテキストの値を更新サーブレットに渡す方法がわかりませんでした。 – Jimmy

+0

また、 'l.get(i).getMemberID()+' – Jimmy

+0

の代わりにそのコードを使用してください。idをJSP/Contollerに渡すためのリンクを使用するのは悪い方法ではありません。 – jddsantaella

1

ここではあなたのためにもう少しまともな何かがありますにJSPポイントを直接指していないお勧めします。これは、JSTL表現言語とタグライブラリを使用します。

<%@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> 
関連する問題