3

我在spring框架中实现了一个java ee webclient。它从网络服务读取数据并以表格格式显示记录。在这张桌子上,我可以通过选中复选框来删除多条记录。

目前我正在使用元刷新刷新表记录。原因是因为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>
4

2 回答 2

3

我建议您使用 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);
}); 

这只是我想象的您的解决方案的快速概述。您可能会找到我编写的关于如何使用 Web 服务、JSP、Servlet、标记库和 AJAX设置 J2EE 应用程序的分步指南。

于 2013-07-28T20:20:05.713 回答
0

我会删除页面刷新并使用 AJAX。这就是我想你应该解决这个问题的方式。定期(使用计时器)对 servlet 进行 AJAX 调用,该 servlet 在数据库中查询自上次此类查询以来添加的记录。返回的记录使用 JSP 模板和标记库格式化为 HTML,并在响应中发送给客户端。AJAX 接收响应并将 HTML 附加到适当的表中。要阻止 AJAX 调用 servlet,您可以在显示弹出框之前停止计时器,并在页面更新并删除记录时重新启动它。

编辑:您可以使用 (id="table1") 标识每个表,然后您可以将该 HTML 附加到正确的表中。

于 2013-07-26T10:51:30.120 回答