Включите Tiles devMode, как devMode Struts, чтобы перезагрузить файл tile.xml при каждом запросе. - PullRequest
3 голосов
/ 10 марта 2010

Есть ли в Apache Tiles устройство типа DevMove, которое перезагружает файл tile.xml при каждом запросе? Если да, то как это можно включить?

Ответы [ 3 ]

3 голосов
/ 22 февраля 2011

Вот еще одна рабочая конфигурация, которая использует Listener вместо Filter. (начиная с Tiles 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>
1 голос
/ 30 июля 2010

Я использовал плитки, но никогда не пытался их динамически перезагружать.

Однако эта страница: 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. 
0 голосов
/ 02 марта 2017

Следующее сработало для меня, используя тайлы 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();
...