TemplateAwareExpressionParser treats null as non-template ParserContext

Issue: SPR-15810
This commit is contained in:
Juergen Hoeller 2017-07-25 14:12:41 +02:00
parent 45e714ec13
commit af93503a09
2 changed files with 11 additions and 31 deletions

View File

@ -54,11 +54,16 @@ public interface ParserContext {
/**
* The default ParserContext implementation that enables template expression parsing
* mode. The expression prefix is #{ and the expression suffix is }.
* The default ParserContext implementation that enables template expression
* parsing mode. The expression prefix is "#{" and the expression suffix is "}".
* @see #isTemplate()
*/
public static final ParserContext TEMPLATE_EXPRESSION = new ParserContext() {
ParserContext TEMPLATE_EXPRESSION = new ParserContext() {
@Override
public boolean isTemplate() {
return true;
}
@Override
public String getExpressionPrefix() {
@ -69,12 +74,6 @@ public interface ParserContext {
public String getExpressionSuffix() {
return "}";
}
@Override
public boolean isTemplate() {
return true;
}
};
}

View File

@ -37,33 +37,14 @@ import org.springframework.lang.Nullable;
*/
public abstract class TemplateAwareExpressionParser implements ExpressionParser {
/**
* Default ParserContext instance for non-template expressions.
*/
private static final ParserContext NON_TEMPLATE_PARSER_CONTEXT = new ParserContext() {
@Override
public boolean isTemplate() {
return false;
}
@Override
public String getExpressionPrefix() {
return "";
}
@Override
public String getExpressionSuffix() {
return "";
}
};
@Override
public Expression parseExpression(String expressionString) throws ParseException {
return parseExpression(expressionString, NON_TEMPLATE_PARSER_CONTEXT);
return parseExpression(expressionString, null);
}
@Override
public Expression parseExpression(String expressionString, ParserContext context) throws ParseException {
if (context.isTemplate()) {
public Expression parseExpression(String expressionString, @Nullable ParserContext context) throws ParseException {
if (context != null && context.isTemplate()) {
return parseTemplate(expressionString, context);
}
else {