使用模板對頁面布局進行管理,是一直以來的一個大問題,從以前的 include 方式到后來使用 tiles 進行布局,對于一個新的項目來說,我覺得布局、安全性、權限等這些東西,都是先要考慮的。
布局管理的目標是什么?? 一般的應用(或是網站)中,具體內容部分相對是比較固定的,但是其外框卻可能隨客戶的喜好而有不同的修改(或是類似網站改版),那么,我認為,使用布局管理的主要目的,就是在這種布局管理修改時,能從容應對,只改動最可能少的文件。
為了達到只改動最可能少的文件的目錄,那么,自然的,我們會想到類似于OO語言中的繼承機制,如果布局是由父類管理的,那么改動時只改動父類就可以了。類似的,模板管理的布局,也應該是達到 這樣的目標的。 從這個角度來說, tiles 最大的可取之處,在于其頁面配置中的繼承機制(不了解 tiles的人請自己找找 tiles的資料看看),同時可參考 http://www.aygfsteel.com/steady/archive/2006/02/08/29953.html 。
在 struts 下,導航可以直接指向 tiles-config 里的定義,這樣就相當于是一個子類(個人覺得,對于大項目來說,這個配置文件的管理也是個大問題)。而在 jsf 里,頁面導航不能直接指向模板定義,而需要一個 jsp ,,雖然是個簡單的 jsp ,可是卻為了一個 view ,我們需要創建兩個 jsp? 對于大點的項目來說,這樣子的工作量并不小。 因此 ,總的來說,使用 tiles這樣子的布局管理,并不能達到我們想要的目的。
說到這個,倒是讓人想起 wicket 的好處來,wicket 里,頁面是一個 java 類對應的,java 類可以繼承,這樣就很自然的把頁面布局的管理,換成上述的 OO 類繼承的方式了。 具體可以參考 wicket 的 example