在我的spring应用程序中使用Apache tiles之前,我想确认apache tiles是否重新加载了正在加载新页面的所有布局属性(例如Header,Menu,Body,footer)。
你可以确认它适用于每个新的页面加载吗?另外,哪个是使用ajax div load vs apache tiles更好的选择?
servlet容器会注意到JSP文件中的更改并重新编译它们(当然,如果没有配置它);例如,当你改变
<title><tiles:insertAttribute name="foo" /></title>
至
<title><tiles:insertAttribute name="bar" /></title>
磁贴定义(即tiles.xml
文件)仅在启动时默认加载。根据the documentation,你可以添加一个过滤器,如果需要,它应该重新加载tile定义。
<filter>
<filter-name>Tiles Filter</filter-name>
<filter-class>org.apache.tiles.web.startup.TilesFilter</filter-class>
<init-param>
<param-name>
org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
</param-name>
<param-value>
/WEB-INF/tiles-defs.xml,/org/apache/tiles/classpath-defs.xml
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Tiles Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
不幸的是,它似乎不适用于我的情况。
Another source建议使用此代替:
<context-param>
<param-name>org.apache.tiles.definition.dao.LocaleUrlDefinitionDAO.CHECK_REFRESH</param-name>
<param-value>true</param-value>
</context-param>
......但这对我也不起作用。
Re:“ajax div load vs apache tiles”:我不完全确定第一个是什么意思,假设这会在运行时通过AJAX获取HTML片段,我相信Tiles会在页面生成时表现更好服务器端,在AJAX解决方案中,用户的浏览器必须一点一点地组装它。这一切都取决于你的用例,真的(页面有多动态?在用户会话期间它是否会发生变化?)
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>WEB-INF/tiles.xml</value>
</list>
</property>
<property name="checkRefresh" value="true" />
</bean>
配置Tiles时使用checkrefresh属性。
这将首先加载所有片段,然后,它将从内存缓存/磁盘缓存加载它们。
您可以使用inspect元素进行检查