【发布时间】:2013-04-24 06:22:44
【问题描述】:
在我的 spring 应用程序中使用 Apache tile 之前,我想确认 apache tile 是否重新加载了所有布局属性(例如页眉、菜单、正文、页脚),新页面正在加载。
您能否确认它适用于每次新页面加载?另外,使用 ajax div load 与 apache tile 哪个更好?
【问题讨论】:
标签: jquery ajax spring apache-tiles
在我的 spring 应用程序中使用 Apache tile 之前,我想确认 apache tile 是否重新加载了所有布局属性(例如页眉、菜单、正文、页脚),新页面正在加载。
您能否确认它适用于每次新页面加载?另外,使用 ajax div load 与 apache tile 哪个更好?
【问题讨论】:
标签: jquery ajax spring apache-tiles
servlet 容器会注意到您的 JSP 文件中的更改并重新编译它们(当然,如果没有另外配置);例如当你改变时
<title><tiles:insertAttribute name="foo" /></title>
到
<title><tiles:insertAttribute name="bar" /></title>
默认情况下,磁贴定义(即tiles.xml 文件)仅在启动时加载。根据the documentation,您可以添加一个过滤器,该过滤器应该在需要时重新加载图块定义。
<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 属性。
这将首先加载所有片段,然后从内存缓存/磁盘缓存中加载它们。
您可以使用检查元素检查这一点
【讨论】: