From f6039d2378aa21734c15949bead1769a5247eeff Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Thu, 24 Mar 2016 22:05:12 +0100 Subject: [PATCH] WW-4619 Disables EL when not supported by container --- .../tiles/StrutsTilesContainerFactory.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java index 0cb14f30c..fe90d75a2 100644 --- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java +++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java @@ -22,6 +22,8 @@ package org.apache.struts2.tiles; import ognl.OgnlException; import ognl.OgnlRuntime; import ognl.PropertyAccessor; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.tiles.TilesContainer; import org.apache.tiles.definition.DefinitionsFactory; import org.apache.tiles.definition.pattern.DefinitionPatternMatcherFactory; @@ -63,6 +65,7 @@ import javax.el.ELResolver; import javax.el.ListELResolver; import javax.el.MapELResolver; import javax.el.ResourceBundleELResolver; +import javax.servlet.jsp.JspFactory; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -81,6 +84,8 @@ import java.util.Map; */ public class StrutsTilesContainerFactory extends BasicTilesContainerFactory { + private static final Logger LOG = LogManager.getLogger(StrutsTilesContainerFactory.class); + /** * The freemarker renderer name. */ @@ -144,7 +149,11 @@ public class StrutsTilesContainerFactory extends BasicTilesContainerFactory { BasicAttributeEvaluatorFactory attributeEvaluatorFactory = new BasicAttributeEvaluatorFactory(new DirectAttributeEvaluator()); attributeEvaluatorFactory.registerAttributeEvaluator(OGNL, createOGNLEvaluator()); - attributeEvaluatorFactory.registerAttributeEvaluator(EL, createELEvaluator(applicationContext)); + + ELAttributeEvaluator elEvaluator = createELEvaluator(applicationContext); + if (elEvaluator != null) { + attributeEvaluatorFactory.registerAttributeEvaluator(EL, elEvaluator); + } return attributeEvaluatorFactory; } @@ -189,6 +198,12 @@ public class StrutsTilesContainerFactory extends BasicTilesContainerFactory { } protected ELAttributeEvaluator createELEvaluator(ApplicationContext applicationContext) { + + if (JspFactory.getDefaultFactory() == null) { + LOG.warn("JspFactory.getDefaultFactory returned null, EL support will be disabled"); + return null; + } + ELAttributeEvaluator evaluator = new ELAttributeEvaluator(); JspExpressionFactoryFactory efFactory = new JspExpressionFactoryFactory(); efFactory.setApplicationContext(applicationContext);