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

时间:2013-10-17 05:50:41

标签: javascript jsp onclick onload

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

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

3 个答案:

答案 0 :(得分:2)

看起来你正在javascript和jsp scriptlet之间混合。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您需要构建一个带有Unique Id的删除网址,以识别服务器端的删除行,然后重新加载整个页面。

客户端

<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删除表中的行