java/jsp使用一种javascript方法对多个表单进行不同的修改

标签 java javascript jsp

我正在创建一堵墙,它的外观和行为应该类似于 Facebook 的墙。我面临的问题是,我想让它能够对帖子发表评论。但我似乎不知道如何使评论表单出现在帖子中(带有 type=text 的输入字段)。

所以我有一段代码可以通过 while 循环将所有帖子和以下评论从数据库打印到网站。但我不知道如何让它用按钮打印一行来创建输入表单 onclick。

代码如下,首先是丹麦语-英语翻译:

  • beskeder = 我的 MySQL 数据库中包含帖子的表
  • kommentarer = 我的 MySQL 数据库中包含帖子评论的表
  • navn = 名称
  • 询问 = 消息
  • kommentar = 评论

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" 的表单并不唯一,因此我无法使它们单独显示。怎么解决呢?

最佳答案

您需要将表单 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">';
}
<小时/>

与具体问题无关scriptlet被认为是 poor practice你的 JDBC 代码是 leaking数据库资源。

关于java/jsp使用一种javascript方法对多个表单进行不同的修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8246599/

相关文章:

java - 什么是 grails 包装器目录?

javascript - JavaScript 中的非重复堆栈

javascript - 根据复选框状态分配数组项值的正确方法是什么?

java - 如果服务器返回 5xx 或关闭 (404),OkHttp 返回缓存的响应

java - Java中的静态字符串路径

javascript - Angular.js ng-class 如果 true 从 Controller 可见

java - 如何在jsp中迭代以下代码?

ajax - JSP:当通过 Ajax POST 调用 servlet 时,RequestDispatcher.forward() 不转发

javascript - JSP 和 JavaScript 转换日期

用于 ANTLR 的 JAVA 树解析器