15.3.Tiles
15.3. Tiles
在使用了Spring的web项目中,很可能会用到Tiles--就像任何其它的web层技术。下面粗略讲述了如何使用。
15.3.1. 需要的资源
使用Tiles项目中必须得包含一些额外的资源,以下是你需要的资源列表:
Struts 1.1以及更高版本
Commons BeanUtils
Commons Digester
Commons Lang
Commons Logging
这些资源全部包含于Spring的发行包中
15.3.2. 如何集成Tiles
使用Tiles,你必须为它配置一些包含了定义信息的文件(关于Tiles定义和其他概念的信息,可以参考 http://jakarta.apache.org/struts)。在Spring中,你可以使用 TilesConfigurer
来完成这项工作。看看下面这个应用上下文配置的例子:
<bean id="tilesConfigurer"> <property name="factoryClass" value="org.apache.struts.tiles.xmlDefinition.I18nFactorySet"/> <property name="definitions"> <list> <value>/WEB-INF/defs/general.xml</value> <value>/WEB-INF/defs/widgets.xml</value> <value>/WEB-INF/defs/administrator.xml</value> <value>/WEB-INF/defs/customer.xml</value> <value>/WEB-INF/defs/templates.xml</value> </list> </property> </bean>
正如你所看到的,有五个包含定义的文件,都放在WEB-INF/defs目录下。在WebApplicationContext初始化的阶段,这些文件被加载,同时由 factoryClass
属性定义的工厂类被初始化。然后,定义文件中的tiles可以做为views在Spring的web 项目中使用。为使views正常工作,你必须有一个 ViewResolver
,就像使用spring提供的任何其它view层技术一样。它有二种选择:InternalResourceViewResolver
和 ResourceBundleViewResolver
。
15.3.2.1. InternalResourceViewResolver
InternalResourceViewResolver为它解析的每个view实例化一个 viewClass
类的实例。
<bean id="viewResolver"> <property name="requestContextAttribute" value="requestContext"/> <property name="viewClass" value="org.springframework.web.servlet.view.tiles.TilesView"/> </bean>
15.3.2.2. ResourceBundleViewResolver
ResourceBundleViewResolver需要一个属性文件,其中包含了它需要使用的视图名和视图类:
<bean id="viewResolver"> <property name="basename" value="views"/> </bean>
... welcomeView.class=org.springframework.web.servlet.view.tiles.TilesView welcomeView.url=welcome (<b>this is the name of a definition</b>) vetsView.class=org.springframework.web.servlet.view.tiles.TilesView vetsView.url=vetsView (<b>again, this is the name of a definition</b>) findOwnersForm.class=org.springframework.web.servlet.view.JstlView findOwnersForm.url=/WEB-INF/jsp/findOwners.jsp ...
正如你所看到的,使用ResourceBundleViewResolver时你可以混用不同的view层技术。