تمكين بلاط Devmode مثل Devmode Struts لإعادة تحميل Tiles.xml مع كل طلب
سؤال
هل تحتوي بلاط Apache على Devplove مثل الدعامات التي من شأنها إعادة تحميل ملف Tiles.xml مع كل طلب؟ إذا كان الأمر كذلك، كيف يمكن تمكين هذا؟
المحلول
لقد استخدمت البلاط، لكنها لم تحاول أبدا إعادة تحميلها ديناميكيا.
ومع ذلك، هذه الصفحة: 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.
نصائح أخرى
فيما يلي تكوين عمل آخر يستخدم المستمع بدلا من المرشح. (منذ البلاط 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>
عملت ما يلي بالنسبة لي باستخدام البلاط 2.2.2 داخل حاوية Servlet.
....
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();
لا تنتمي إلى StackOverflow