2015-02-24 86 views
0

作爲構建基於J2EE的Web應用程序的一部分,我一直使用Struts2作爲我的MVC框架。在MVC框架中呈現HTML表格

該應用程序的一部分是顯示報告(HTML表),主要是數千行和數十列的大小。我已經實施了分頁以使報告可讀等等。

報告系統今天的工作方式如下:整個數據以OOP方式準備並放置在ValueStack上。相應的JSP將讀取valueStack的數據並使用JSTL來繪製HTML代碼。

我正在修改代碼,我想重新審視這個邏輯以符合行業的最佳實踐。這裏的主要問題是,那裏有哪些最佳實踐?

渲染和繪製報告需要時間。尤其是在基於IE的瀏覽器上,在顯示數據之前頁面變得沒有響應(IE8支持是必須擔心的)。那麼最好的選擇是什麼?

是否使用javascript框架如jQuery並將繪圖部分移動到客戶端?我知道是否將整個HTML代碼以某種方式存儲在值棧中並以1鏡頭的形式顯示? 您認爲最佳方式是什麼?

+1

一個最佳做法是在服務器上只計算您顯示的分頁標籤的數據。如果您顯示例如結果100到199在一個頁面上,排序你的數據並且只從服務器獲得100到199的項目,並且保存服務器的計算時間非常長。儘管您從服務器加載每個頁面,但處理較少數量的每個視圖的數據效率可能會更好。 – mico 2015-02-24 14:56:16

+1

另一種思考方式:呈現所有內容並呈現它的解決方案可能是提供_whole_結果集的最快方法。問題很少可能需要整個結果集。如果您可以確定人們需要什麼並提供適當的過濾方法,那麼人們將會以更少的數據發送得到更快的速度。另一個考慮是,即使他們想要查看整個集合(在瀏覽器中)響應是關鍵,考慮50個記錄的可見區域,但是json獲取大小爲100.然後在範圍移向可用記錄。 – Quaternion 2015-02-25 00:25:09

+1

有已經提供這種功能(無縫滾動)的JavaScript UI控件,它是現代「數據網格」的一個共同特徵。 – Quaternion 2015-02-25 00:27:20

回答

1

何時以及如何使用分頁主要是基於用例的,應根據每個案例對整個記錄的數量,每頁記錄的數量,單個記錄的大小,主要設備用於生態系統(主要是臺式機,普遍移動,混合等),網絡,服務器和數據庫功能等等。但如果你決定使用分頁(如果你有很多記錄,這是唯一的選擇),那麼唯一的最佳實踐是隻加載該請求所需的數據。

如果您希望在10.000的結果集中查看90到100的結果,那麼加載頁面中的所有10.000記錄將會很糟糕;將所有的10.000記錄載入服務器,然後只將所請求的10個傳送給客戶端也是錯誤的;過濾必須應用於儘可能最低的級別,通常是數據庫。

既然你已經標記了這個Struts2,jQuery和Grid,我強烈建議你看看Struts2-jQuery-Grid-Plugin和它的Showcase

這是新的和積極維護,它只需要在初始學習曲線上的一個小的努力。

它是原生jQueryGrid的Struts2包裝器(如果你想自己處理Javascript,你可以使用原來的包裝器)。

對於jQGrid pagination,SO有200多個問題,閱讀很好。