我写了以下内容,用于显示数据库的不同行和列。在每行的前面,都有一个删除按钮。 单击“删除”按钮应该调用一组函数/执行在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>
答案 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
删除表中的行