在我的 spring 应用程序中使用 Apache tile 之前,我想确认 apache tile 是否重新加载了所有布局属性(例如页眉、菜单、正文、页脚)一个新页面正在加载。
您能否确认它适用于每个新页面加载?此外,使用 ajax div load 与 apache tile 哪个更好?
在我的 spring 应用程序中使用 Apache tile 之前,我想确认 apache tile 是否重新加载了所有布局属性(例如页眉、菜单、正文、页脚)一个新页面正在加载。
您能否确认它适用于每个新页面加载?此外,使用 ajax div load 与 apache tile 哪个更好?
servlet 容器会注意到您的 JSP 文件中的更改并重新编译它们(当然,如果没有另外配置);例如当你改变
<title><tiles:insertAttribute name="foo" /></title>
至
<title><tiles:insertAttribute name="bar" /></title>
tiles.xml
默认情况下仅在启动时加载切片定义(即文件)。根据文档,您可以添加一个过滤器,该过滤器应该在需要时重新加载图块定义。
<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>
不幸的是,它似乎不适用于我的情况。
另一个消息来源建议改用这个:
<context-param>
<param-name>org.apache.tiles.definition.dao.LocaleUrlDefinitionDAO.CHECK_REFRESH</param-name>
<param-value>true</param-value>
</context-param>
...但这对我也不起作用。
回复:“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属性。
这将首先加载所有片段,然后从内存缓存/磁盘缓存中加载它们。
您可以使用检查元素检查这一点