使用模板对页面布局进行管理,是一直以来的一个大问题,从以前的 include 方式到后来使用 tiles 进行布局,对于一个新的项目来说,我觉得布局、安全性、权限等这些东西,都是先要考虑的。
布局管理的目标是什么?? 一般的应用(或是网站)中,具体内容部分相对是比较固定的,但是其外框却可能随客户的喜好而有不同的修改(或是类似网站改版),那么,我认为,使用布局管理的主要目的,就是在这种布局管理修改时,能从容应对,只改动最可能少的文件。
为了达到只改动最可能少的文件的目录,那么,自然的,我们会想到类似于OO语言中的继承机制,如果布局是由父类管理的,那么改动时只改动父类就可以了。类似的,模板管理的布局,也应该是达到 这样的目标的。 从这个角度来说, tiles 最大的可取之处,在于其页面配置中的继承机制(不了解 tiles的人请自己找找 tiles的资料看看),同时可参考 http://www.blogjava.net/steady/archive/2006/02/08/29953.html 。
在 struts 下,导航可以直接指向 tiles-config 里的定义,这样就相当于是一个子类(个人觉得,对于大项目来说,这个配置文件的管理也是个大问题)。而在 jsf 里,页面导航不能直接指向模板定义,而需要一个 jsp ,,虽然是个简单的 jsp ,可是却为了一个 view ,我们需要创建两个 jsp? 对于大点的项目来说,这样子的工作量并不小。 因此 ,总的来说,使用 tiles这样子的布局管理,并不能达到我们想要的目的。
说到这个,倒是让人想起 wicket 的好处来,wicket 里,页面是一个 java 类对应的,java 类可以继承,这样就很自然的把页面布局的管理,换成上述的 OO 类继承的方式了。 具体可以参考 wicket 的 example