apache tile每次刷新所有属性吗?

问题描述 投票:2回答:2

在我的spring应用程序中使用Apache tiles之前,我想确认apache tiles是否重新加载了正在加载新页面的所有布局属性(例如Header,Menu,Body,footer)。

你可以确认它适用于每个新的页面加载吗?另外,哪个是使用ajax div load vs apache tiles更好的选择?

jquery ajax spring apache-tiles
2个回答
0
投票

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解决方案中,用户的浏览器必须一点一点地组装它。这一切都取决于你的用例,真的(页面有多动态?在用户会话期间它是否会发生变化?)


0
投票
<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元素进行检查

© www.soinside.com 2019 - 2024. All rights reserved.