As definded in javax.servlet.jsp.JspContext in J2EE 1.4, getVariableResolver() is an abstract method and this provides an opportunity for a custom tag to use the standard JSTL evaluation with a custom VariableResolver. But the standard JSTL (standard-110_13) is not using the VariableResolver provided by getVariableResolver() in the subclass of JspContext. In standard-110_13, when org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager::evaluate() is called, it delegates the call to org.apache.taglibs.standard.lang.jstl.Evaluator::evaluate(). The Evaluator::evaluate() then uses ELEvaluator::evaluate() to evaluate the expression. But ELEvaluator is always constructed with JSTLVariableResolver and ignores the VariableResolver in PageContext. As the API definition of JspContext in J2EE 1.4, the getVariableResolver() is an abstract method and the custom tag is allowed to provide the custom PagaContext and then the custom VariableResolver. So the custom tag can still use the standard JSTL Evaluator but with the custom VariableResolver. Is there any reason why the custom VariableResolver in PageContext is not used in the standard JSTL ELEvaluator?
As the Standard taglib is in maintenance mode, I'm marking this enhancement as WONTFIX and passing it along to the Glassfish reference implementation: https://glassfish.dev.java.net/issues/show_bug.cgi?id=2616