Index: src/org/apache/taglibs/standard/lang/jstl/ELEvaluator.java =================================================================== --- src/org/apache/taglibs/standard/lang/jstl/ELEvaluator.java (revision 578282) +++ src/org/apache/taglibs/standard/lang/jstl/ELEvaluator.java (working copy) @@ -259,7 +259,8 @@ ELParser parser = new ELParser (r); try { ret = parser.ExpressionString (); - sCachedExpressionStrings.put (pExpressionString, ret); + if (mBypassCache == false) + sCachedExpressionStrings.put (pExpressionString, ret); } catch (ParseException exc) { throw new ELException @@ -310,17 +311,19 @@ } // Find the cached value - Map valueByString = getOrCreateExpectedTypeMap (pExpectedType); - if (!mBypassCache && - valueByString.containsKey (pValue)) { - return valueByString.get (pValue); + Map valueByString = null; + + if (!mBypassCache) { + valueByString = getOrCreateExpectedTypeMap (pExpectedType); + if (valueByString.containsKey (pValue)) { + return valueByString.get (pValue); + } } - else { - // Convert from a String - Object ret = Coercions.coerce (pValue, pExpectedType, pLogger); - valueByString.put (pValue, ret); - return ret; - } + // Convert from a String + Object ret = Coercions.coerce (pValue, pExpectedType, pLogger); + if (!mBypassCache) + valueByString.put (pValue, ret); + return ret; } //------------------------------------- Index: src/org/apache/taglibs/standard/lang/jstl/Evaluator.java =================================================================== --- src/org/apache/taglibs/standard/lang/jstl/Evaluator.java (revision 578282) +++ src/org/apache/taglibs/standard/lang/jstl/Evaluator.java (working copy) @@ -53,7 +53,7 @@ /** The singleton instance of the evaluator **/ static ELEvaluator sEvaluator = new ELEvaluator - (new JSTLVariableResolver ()); + (new JSTLVariableResolver (), Boolean.getBoolean("org.apache.taglibs.standard.elevaluator.mBypassCache")); //------------------------------------- // ExpressionEvaluator methods