2

在我的 spring 应用程序中使用 Apache tile 之前,我想确认 apache tile 是否重新加载了所有布局属性(例如页眉、菜单、正文、页脚)一个新页面正在加载。

您能否确认它适用于每个新页面加载?此外,使用 ajax div load 与 apache tile 哪个更好?

4

2 回答 2

0

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

于 2013-04-24T11:25:17.793 回答
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属性。

这将首先加载所有片段,然后从内存缓存/磁盘缓存中加载它们。

您可以使用检查元素检查这一点

于 2019-03-23T07:20:59.153 回答