ITEEDU

Struts Gossip: 设置 Tiles 模版引擎

在网页上最常用来处理版面的是表格,透过将表格边框设定为0,可以用它来切割版面,并在当中置入内容,然而一大堆版面配置的卷标将与内容夹杂在一起,如果以后要更改内容或版面配置,会是一个麻烦。

在窗口程序的设计中存在有版面管理员(Layout Manager)机制,我们可以选择一个版面管理机制,之后直接在窗口容器上添加组件而不用处理版面配置细节,而由版面管理员来自己处理组件的版面配置, 如果想要改变版面配置,则只要直接更换版面管理员,所有的组件将自动依新的管理员而重新配置版面。

Tiles提供一个类似于窗口程序版面管理的机制,透过定义档,您可以定义版面配置,以及当中所要置入的内容网页,内容与版面配置的卷标可以分离,您可以随时抽换每一个内容网页,也可以重用每一个版面配置。

Tiles随着Struts一同发布,您可以直接从struts-blank中开始设定,当中已经包括了Tiles必要的档案与设定,如果您要自行设定 Tiles,您必须要有commons-beanutils.jar、commons-logging.jar、commons- collections.jar、commons-digester.jar、struts.jar四个档案在您的/WEB-INF/lib目录中,并且 在struts-config.xml中加入以下的内容:
struts-config.xml
...
 <plug-in className="org.apache.struts.tiles.TilesPlugin" >
    <set-property property="definitions-config"
                  value="/WEB-INF/conf/tiles-defs.xml" />
    <set-property property="moduleAware"
                  value="true" />
    <set-property property="definitions-parser-validate"
                  value="true" />
  </plug-in>
...
在Struts 1.1后,您只要使用 Plugin 就可以挂上Tiles的功能。definitions-config属性中的tiles-defs.xml是Tiles的定义档,Tiles提供了一个处 理请求的 RequestProcessor,可以进行一些forward与include的额外动作:
<controller
    processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
您可以参考struts-blank中的设定,将上面两个设定加入struts-config.xml中;最后,您要将 struts-tiles.tld放置在/WEB-INF/tld下,并在web.xml中定义,这样可以使用Tiles标签,例如在web.xml中是 这么设定的:
web.xml 
...
  <taglib>
    <taglib-uri>/tags/struts-tiles</taglib-uri>
    <taglib-location>
        /WEB-INF/tld/struts-tiles.tld
    </taglib-location>
  </taglib>
...

完成以上之后,您就可以开始使用Tiles的功能了,Tiles的定义档可以使用XML或JSP页面来完成。