2013-10-17 81 views
1

我已經編寫了下列內容來顯示數據庫的不同行和列。和每一行的前面都有一個刪除按鈕。 刪除按鈕的Onclick應該調用一組函數/執行寫入Onclick事件的代碼(下面的檢查)。現在發生的事情是當JSP頁面加載時,它進入方法。所以如果有3行, 它會調用該方法3次....幫助!它應該只是這些方法調用「點擊」刪除按鈕的...JSP:在發生頁面加載事件時正在執行Onclick代碼

 <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

的onclick是客戶端事件,你只能指定任何JavaScript函數時,將發生此事件將被調用。你不能指定任何服務器端的jsp/java函數。

+0

嗨,謝謝!如果我需要在點擊一個按鈕時調用jsp/java函數,我該如何去做呢? – Saumya

+0

onclick在一個按鈕,你需要調用一個JavaScript函數,它會發送Ajax請求到服務器,如果你使用jQuery,你可以看到http://api.jquery.com/jQuery.ajax/ – Vikas

2

它看起來像你在javascript和jsp scriptlet之間混合東西。

onclick是一個javascript事件,當元素被點擊時發生,在這種情況下是一個按鈕。
onlick=""應該引用一個javascript函數,但是在你的代碼示例中你有一個scriptlet。

Scriptlet在JSP被調用時執行,所以當頁面加載時。

+0

太棒了!謝謝!我對此很陌生。 !現在,如何在上面代碼中的Delete按鈕的onclick事件中使用我的java/jsp scriplet函數?請你幫忙。 – Saumya

0

您需要構建一個帶有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從表中刪除該行

相關問題