gpt4 book ai didi

java - 使用 Spring El 表达式进行模板化

转载 作者:行者123 更新时间:2023-11-30 07:51:53 28 4
gpt4 key购买 nike

我想使用 spring el 进行简单的模板,例如“Some text:#{来自 map 的一些动态值}”。就我而言,示例来自 docs不适合,因为它仅适用于值形式映射:

    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)

我的错误是什么?

最佳答案

文本必须是文字。

你现在所拥有的在java中看起来像这样......

String s = some text: data.get("property");

...这显然无法编译。

如果你用java编写它,你需要使用...

String s = "some text: " + data.get("property");

...所以您需要使用 SpEL 中的等效项...

"'Some text: ' + #data['property']"

关于java - 使用 Spring El 表达式进行模板化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33245769/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com