From 65655b949f2529e56ad979b1a75ab8264a5860a9 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 10 Jun 2010 22:13:31 +0000 Subject: [PATCH] set Tiles 2.2 ELAttributeEvaluator on RendererFactory as well (SPR-7251) --- .../web/servlet/view/tiles2/TilesConfigurer.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/tiles2/TilesConfigurer.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/tiles2/TilesConfigurer.java index f05cc45eb0..ef3dcdcab0 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/tiles2/TilesConfigurer.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/tiles2/TilesConfigurer.java @@ -31,6 +31,7 @@ import javax.servlet.jsp.JspFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tiles.TilesApplicationContext; +import org.apache.tiles.TilesContainer; import org.apache.tiles.TilesException; import org.apache.tiles.awareness.TilesApplicationContextAware; import org.apache.tiles.context.AbstractTilesApplicationContextFactory; @@ -54,6 +55,7 @@ import org.apache.tiles.impl.mgmt.CachingTilesContainer; import org.apache.tiles.locale.LocaleResolver; import org.apache.tiles.preparer.BasicPreparerFactory; import org.apache.tiles.preparer.PreparerFactory; +import org.apache.tiles.renderer.RendererFactory; import org.apache.tiles.servlet.context.ServletUtil; import org.apache.tiles.startup.BasicTilesInitializer; import org.apache.tiles.startup.TilesInitializer; @@ -533,6 +535,16 @@ public class TilesConfigurer implements ServletContextAware, InitializingBean, D Object baefValue = baefCtor.newInstance(evaluator); Method setter = container.getClass().getMethod("setAttributeEvaluatorFactory", aef); setter.invoke(container, baefValue); + Method getRequestContextFactory = BasicTilesContainer.class.getDeclaredMethod("getRequestContextFactory"); + getRequestContextFactory.setAccessible(true); + Method createRendererFactory = BasicTilesContainerFactory.class.getDeclaredMethod("createRendererFactory", + TilesApplicationContext.class, TilesRequestContextFactory.class, TilesContainer.class, aef); + createRendererFactory.setAccessible(true); + BasicTilesContainerFactory tcf = new BasicTilesContainerFactory(); + RendererFactory rendererFactory = (RendererFactory) createRendererFactory.invoke( + tcf, container.getApplicationContext(), getRequestContextFactory.invoke(container), + container, baefValue); + container.setRendererFactory(rendererFactory); } catch (Exception ex) { throw new IllegalStateException("Cannot activate ELAttributeEvaluator", ex);