JSP:当页面加载事件发生时,正在执行 Onclick 代码

JSP: Onclick code is being performed when on page load event occurs

本文关键字:执行 代码 Onclick 事件 加载 JSP      更新时间:2023-09-26

我写了以下内容来显示数据库的不同行和列。 在每一行的前面,都有一个删除按钮。单击删除按钮应调用一组函数/执行在 Onclick 事件中编写的代码(检查如下)。现在发生的事情是当 JSP 页面正在加载时,它会进入方法内部。所以如果有 3 行,它将调用该方法 3 次。帮助!它应该只"单击"删除按钮调用这些方法...

      <tbody>    <% 
                int x;
                while(rs2.next()){
                    x=0;
                    %>
                    <tr><%
                    while(x<d)
                    {
                    x=x+1;
                 %>
            <td>  <%
                    out.print(rs2.getString(x));%></td>
            <% } %>
          <td> <input type="button" value="Delete" class="btn" id="DeleteBtn" onclick="<% System.out.print("Delete button"); tableupdateBean.setupdateRow(rs2.getString(x)); tableupdateBean.DeleteRow();%>" /> </td>
           </tr> 
            <% } %>
     </tbody>

看起来你在javascript和jsp scriptlet之间混合了一些东西。

OnClick 是一个 JavaScript 事件,当元素被单击时发生,在本例中为按钮。
onlick=""应该引用一个 JavaScript 函数,但在你的代码示例中,你有一个脚本。

脚本在调用 JSP 时执行,因此在页面加载时执行。

onclick是客户端事件,您只能指定发生此事件时将调用的任何JavaScript函数。您不能指定任何服务器端 jsp/java 函数。

您需要

构造一个带有Unique Id的删除 url,以从服务器端识别删除行并再次重新加载整个页面。

客户端

<a href="/yoururl?mode=delete&id="+<Unique Id>>Delete Row</a>

服务器端

if("delete".equals(request.getParameter("mode"))
{
String id = request.getParameter("id");
// write code for deletion
}
//redirect to the same page again

如果不想重新加载整个页面,则必须编写ajax调用以在服务器端执行删除,并使用javascript从表中删除该行