2011-11-23 41 views
1

我正在創建一個牆壁,應該看起來像Facebook的牆一樣。我面臨的問題是,我想讓它能夠對帖子發表評論。但我似乎無法弄清楚,如何發表評論表單(輸入字段爲type=text)。Java/jsp使用一種javascript方法以不同方式修改多個表單

因此,我有一段代碼,通過while循環打印出所有帖子和從數據庫中的以下評論到網站。但我不知道如何使用按鈕打印一行來創建onclick輸入表單。

的代碼如下,第一丹麥英語翻譯:

  • beskeder =包含在我的MySQL數據庫包含評論的帖子
  • 職位
  • kommentarer =表我的MySQL數據庫中的表
  • navn =名
  • besked =消息
  • kommentar = com的換貨

的JSP代碼:

<% 
    if (wallrs != null) { 
     while(wallrs.next()) { 
%> 
      <br><b><%=wallrs.getString("navn")%></b> 
      <br><%=wallrs.getString("besked") %> 
<% 
      int wallrsid = wallrs.getInt("id"); 
      dbconnect.getKommentarResultset(wallrsid); 
      ResultSet kommentarrs = dbconnect.getKommentarRS(); 

      if (kommentarrs != null) { 
       while (kommentarrs.next()) { 
%> 
        <Blockquote> 
         <b><%=kommentarrs.getString("navn") %>:</b> 
         <br><%=kommentarrs.getString("kommentar") %> 
        </Blockquote> 
<% 
       } 
      } 
%> 
      <form id="besked<%= wallrsid%>"></form> 
      <button type="submit" onclick="show_form()">Kommenter</button> 
<% 
     } 
    } 
%> 

JavaScript函數它鏈接到:

function show_form() { 
    document.getElementById("besked").innerHTML = "<input type=text value=Skriv>"; 
} 

JavaBean的:

public void createMessage(String besked, String ip) { 
    try { 
     PreparedStatement pstmcreateMessage = con.prepareStatement("INSERT INTO beskeder(navn, besked, ip) VALUES(?,?,?)"); 
     pstmcreateMessage.setString(1, getName()); 
     pstmcreateMessage.setString(2, besked); 
     pstmcreateMessage.setString(3, ip); 
     pstmcreateMessage.executeUpdate(); 
     System.out.println("SUCCES! "); 
    } catch(Exception e) { 
     e.printStackTrace(); 
     System.out.println("Can't create message"); 
    } 
} 

public void createComment(String kommentar, String ip, int beskedid) { 
    try { 
     PreparedStatement pstmcreateComment = con.prepareStatement("INSERT INTO kommentarer(navn, kommentar, ip, beskedid) VALUES(?,?,?,?)"); 
     pstmcreateComment.setString(1, getName()); 
     pstmcreateComment.setString(2, kommentar); 
     pstmcreateComment.setString(3, ip); 
     pstmcreateComment.setInt(4, beskedid); 
    } catch(Exception e) { 
     e.printStackTrace(); 
     System.out.println("Can't create comment"); 
    } 
} 

// Returner hele væggen i et result set 
private ResultSet wallRS; 
public void getWallResultset() { 
    PreparedStatement getWall; 
    try { 
     getWall = con.prepareStatement("SELECT * FROM beskeder"); 
     wallRS = getWall.executeQuery(); 
    } catch (SQLException e) { 
     System.out.println("Error in resultset wall rs"); 
     // e.printStackTrace(); 
    } 
} 

public ResultSet getWallrs() { 
    return wallRS; 
} 

// Returner kommentarer 
private ResultSet kommentarRS; 
public void getKommentarResultset(int beskedid) { 
    PreparedStatement getComment; 
    try { 
     getComment = con.prepareStatement("SELECT * FROM kommentarer WHERE beskedid=?"); 
     getComment.setInt(1, beskedid); 
     kommentarRS = getComment.executeQuery(); 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

public ResultSet getKommentarRS() { 
    return kommentarRS; 
} 

正如你看到id="besked" ISN形式獨特的,所以我不能讓他們顯示個人盟友。我該如何解決它?

回答

0

您需要將表單ID傳遞給JS函數,以便它可以找到正確的表單。

更換

<button type="submit" onclick="show_form()">Kommenter</button> 

通過

<button onclick="show_form('besked<%= wallrsid%>')">Kommenter</button> 

並更換

function show_form() { 
    document.getElementById("besked").innerHTML = "<input type=text value=Skriv>"; 
} 

通過

function show_form(id) { 
    document.getElementById(id).innerHTML = '<input type="text" name="kommentar" value="Skriv">'; 
} 

無關的具體問題,小腳本被認爲poor practice和JDBC代碼爲leaking DB資源。

+0

非常感謝,也是你的建設性批評非常感謝:) – Kevin

+0

不客氣。 – BalusC

相關問題