我想使用Spring EL来进行简单的模板化,例如:"Some text: #{从映射中获取的某些动态值}"
。但在我的情况下,文档中的示例并不适用,因为它只适用于从映射中获取值:
Map<String, Object> data = new HashMap<String, Object>();
data.put("property", 123);
String message = "#data['property']";
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("data", data);
System.out.println(parser.parseExpression(message).getValue(context, String.class));
在这种情况下,输出结果为
123
,但是String message = "Some text: #data['property']";
却引发了异常。org.springframework.expression.spel.SpelParseException: EL1041E:(pos 5): After parsing a valid expression, there is still more data in the expression: 'text'
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.doParseExpression(InternalSpelExpressionParser.java:129)
at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:60)
at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:32)
at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:76)
at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:62)
我的错误在哪里?