4

我有以下大小的各种表格:12 列和最多 1800 行。将其呈现给用户需要 8 秒。我目前使用h:dataTable. 我试图ui:repeat从由 JSF 管理的 Java List 对象中获取行数据。虽然这工作正常,但 8 秒渲染表格是不可接受的。我正在尝试寻找其他方法来做到这一点,但需要在页面上保留JSFcontroller的操作按钮。换句话说,我想自己为托管 bean 方法创建“表标记to send to the页面h:commandButtons”。and then still associate actions on有没有办法做到这一点?

我能想到的唯一方法是使用jqueryajax创建表格标记,尽管我对用于 UI 开发的 JSF 以外的技术不熟悉。也许我会以某种方式将其传递给客户端进行渲染。唯一的问题是我不知道如何从我的列表中生成标记,其次我将如何h:commandButtons在我的XHTML文件中注入它。

有谁知道我如何解决这个问题而不必完全撕掉 JSF?我遇到的一个主要问题是 业务需求说我们不能对数据表进行分页(例如:Next / Back 按钮一次显示 100 个)。所以,可能我在想我可以通过 Ajax 调用服务器来做到这一点,并在页面准备好后一次获得 100 行,并在幕后将新行附加给用户。这将是“感知”的加载速度,但我根本不知道该怎么做。


基本上,您需要首先删除以太网标头。接下来,删除 IP 标头,最后删除 TCP 标头。但是,可以在 MAC 或 IP 层进行加密。在这种情况下,您需要先解密数据,然后才能删除标头并提取有效负载。无论如何,这是一个非常广泛的问题;您应该熟悉http://en.wikipedia.org/wiki/OSI_model 我确信 Linux 中已经准备好可以满足您要求的库(前提是没有加密或您可以解密)

4

1 回答 1

0

8 秒对于 12 列的 1800 行来说还不错。10~100 行在不到一秒的时间内完成,对吧?

在继续此之前,您是否绝对肯定所有这 1800 行都应该立即显示?这不是对用户很不友好吗?用户不需要 Ctrl+F 来查找它正在寻找的信息吗?那不是很烦人吗?您为什么不引入过滤(搜索字段)和分页,就像 Google 所做的那样,以理智和用户友好的方式呈现无数结果?

无论如何,您可以考虑使用PrimeFaces 的“按需数据”选项<p:dataTable>,其中数据在滚动过程中由 ajax 加载<p:dataTable liveScroll="true">。另请参见展示示例。不需要自制代码,也不需要手动摆弄 jQuery。PrimeFaces 在幕后完成了这一切。

如果您出于某种原因不想使用 PrimeFaces,那么您可以考虑将OmniFaces <o:componentIdParam>与一些 jQuery“实时滚动”插件结合使用。另请参阅其(快照)展示页面中的最后一个示例以获取启动示例(应该很容易适应通过点击滚动底部而不是单击来触发)。

于 2012-10-19T14:49:42.307 回答