تمكين بلاط Devmode مثل Devmode Struts لإعادة تحميل Tiles.xml مع كل طلب

StackOverflow https://stackoverflow.com/questions/2412604

  •  18-09-2019
  •  | 
  •  

سؤال

هل تحتوي بلاط 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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top