【问题标题】:Does apache tiles refreshe all attributes each time?apache tile 每次都会刷新所有属性吗?
【发布时间】:2013-04-24 06:22:44
【问题描述】:

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

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

【问题讨论】:

    标签: jquery ajax spring apache-tiles


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      <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 属性。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-29
        • 1970-01-01
        • 2011-07-06
        • 2016-02-03
        • 1970-01-01
        • 1970-01-01
        • 2014-01-15
        • 2013-04-01
        相关资源
        最近更新 更多