3

Apache Tiles 是否有类似 Struts 的 devMove 会在每个请求中重新加载tiles.xml 文件?如果是这样,如何启用它?

4

3 回答 3

3

这是另一个使用监听器而不是过滤器的工作配置。(从瓷砖 2.1.2 开始)

在 web.xml 中:

<context-param>
  <param-name>org.apache.tiles.definition.dao.LocaleUrlDefinitionDAO.CHECK_REFRESH</param-name>
  <param-value>true</param-value>
</context-param>
<listener>
  <listener-class>org.apache.tiles.web.startup.TilesListener</listener-class>
</listener>
于 2011-02-22T14:00:03.877 回答
1

我使用过瓷砖,但从未尝试过动态重新加载它。

但是,此页面: http ://tiles.apache.org/tutorial/configuration.html

说:

    Load the Tiles filter. It is useful if your definition files can be changed and you periodically need to reload them. 
于 2010-07-30T15:07:25.323 回答
0

以下对我使用 servlet 容器内的 tile 2.2.2 有效。

....
import org.apache.tiles.definition.DefinitionsFactory;
import org.apache.tiles.definition.UnresolvingLocaleDefinitionsFactory;
import org.apache.tiles.definition.dao.ResolvingLocaleUrlDefinitionDAO;
import org.apache.tiles.impl.BasicTilesContainer;
import org.apache.tiles.servlet.context.ServletUtil;

//When using SimpleTilesListener =>  BasicTilesContainer is returned
//When using StrutsTilesListener => CachingTilesContainer is returned which extends BasicTilesContainer
BasicTilesContainer tilesCont = (BasicTilesContainer) ServletUtil.getContainer(ServletActionContext.getServletContext());

DefinitionsFactory defFact = tilesCont.getDefinitionsFactory();
Field field= UnresolvingLocaleDefinitionsFactory.class.getDeclaredField("definitionDao");
field.setAccessible(true);
ResolvingLocaleUrlDefinitionDAO rludDAO = (ResolvingLocaleUrlDefinitionDAO)field.get(defFact);
rludDAO.refresh();
于 2017-03-02T17:15:39.470 回答