2013-07-26 132 views
2

我在spring框架中實現了一個java ee webclient。它從web服務讀取數據並以表格格式顯示記錄。在這張表上,通過選擇複選框即可刪除多條記錄。java jstl使用ajax填充表數據

currenty im使用元刷新刷新表記錄。原因是因爲JavaScript定時器刷新會將頁面置頂。它會在用戶查看記錄時影響用戶體驗。

當用戶選擇要刪除的記錄並單擊刪除時,會彈出一個javascript確認對話框。使用元刷新的問題在彈出確認對話框時無法停止刷新。我試過jQuery,但它沒有工作。

即時想到實現ajax來檢索表的記錄。但我怎樣纔能有效地實施它。表中的記錄是動態的。

要進一步添加,我有多個html表格。例如,

#table 1 
<table><tr><td></td>....</tr></table> 

#table 2 
<table><tr><td></td>....</tr></table> 

#table 3 
<table><tr><td></td>....</tr></table> 

回答

2

我建議你使用JSP作爲模板。這意味着JSP的主體包含靜態元素,如HTML代碼,表單和表格,而您可以使用標籤庫插入動態數據。在你的情況下,來自數據庫記錄的數據。

<c:forEach items="${listOfRecords}" var="item"> 
    <table> 
     <tr> 
      <td>  
       <c:out value="${item}"/> 
      </td> 
     </tr>  
    </table> 
</c:forEach> 

然後使用一個servlet,你可以發送這個響應給客戶端。 AJAX調用將收到響應並將HTML附加到當前表。在AJAX下面的代碼片段中,將請求中的數據(「recordid =」+ id)發送到位於/ approot/myservlet的servlet。當servlet接收到請求時,它從請求中檢索記錄ID,從數據庫中刪除記錄,檢索自上次查詢以來添加的任何新記錄,通過請求分派器將新記錄傳遞給JSP,包含新的HTML表生成數據並將其作爲響應發送回瀏覽器。成功屬性中的javascript已啓動,並且包含在msg變量中的響應會附加到當前表中。

$.ajax({ 
    type: "post", 
    url: "/approot/myservlet", 
    data: "recordid="+id, 
    success: function(msg){ $('#table1').append(msg); 
}); 

這只是我想象的是您的解決方案的快速概述。你可能會發現一步一步的指南,我寫了關於如何設置一個J2EE application using a web service, JSP, Servlet, tag libs and AJAX.

+0

嗨亞歷克斯,我怎麼能返回控制器中的jsp模板?即時將它作爲文本返回。 – nuttynibbles

+0

好的,我無法返回jsp模板。 btw即時通訊使用春天mvc瓷磚。我意識到即時通訊包括。你會知道我怎麼才能返回jsp模板? – nuttynibbles

+0

嘿我管理模板。我意識到我的控制器有錯誤 – nuttynibbles

0

我會刪除頁面刷新並使用AJAX。這是我想象你應該解決這個問題的方式。 AJAX調用是定期(使用定時器)對servlet進行的,該servlet向數據庫查詢自上次查詢以來添加的記錄。返回的記錄使用JSP模板和標籤庫格式化爲HTML,並在響應中發送給客戶端。 AJAX接收響應並將HTML附加到適當的表格。要阻止AJAX調用servlet,可以在顯示彈出框之前停止計時器,並在頁面更新時刪除記錄時重新啓動計時器。

編輯:你可以用一個(id =「table1」)來標識每個表格,然後你可以將該HTML附加到正確的表格中。

+0

嗨亞歷克斯,即時通訊新的java ee如此原諒我。我相信當你說jsp模板時,它意味着JSTL是正確的。所以我會在控制器中得到返回的結果。但如何將返回的結果格式化爲jsp模板並返回到ajax?我知道如何返回一個簡單的字符串到Ajax,但在jsp模板中格式化的HTML? – nuttynibbles