You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVEL表达式解析报错:无效数字字面量11412Test问题求助

问题解决:MVEL2解析数字开头字符串报错

问题详情

使用mvel2-2.4.14-Final时,模板中写@{11412Test}会触发解析错误,报错栈如下:

Caused by: [Error: invalid number literal: 11412Test][Near : {... v>
@{11412Test} ....}]
[Line: 1, Column: 57]
at org.mvel2.util.ParseTools.isNumber(ParseTools.java:1903)
at org.mvel2.ast.ASTNode.setName(ASTNode.java:257)
at org.mvel2.ast.ASTNode.(ASTNode.java:422)
at org.mvel2.compiler.AbstractParser.createPropertyToken(AbstractParser.java:1428)
at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:896)
at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:127)
at org.mvel2.MVEL.compileExpression(MVEL.java:832)
at org.mvel2.templates.res.CompiledExpressionNode.(CompiledExpressionNode.java:41)
at org.mvel2.templates.TemplateCompiler.compileFrom(TemplateCompiler.java:211)
... 131 more

单独用Test或11412时表达式可正常解析,仅数字开头的混合字符串触发问题。

根本原因

MVEL语法规则中,数字开头的字符序列会被优先尝试解析为数字字面量,11412Test不符合数字格式,因此触发解析错误。同时,MVEL不允许变量名以数字开头,即便你想引用名为11412Test的变量,也违反语法规范。

解决办法

根据实际需求场景选择对应方案:

1. 仅需输出11412Test字符串字面量

将字符串用单引号或双引号包裹,明确告知MVEL这是字符串类型:

<div><br>@{ '11412Test' }</div>

2. 需要引用变量

修改变量名为MVEL合法标识符(必须以字母、下划线_或美元符号$开头),例如将11412Test改为test11412或_11412Test,再调整表达式:

<div><br>@{ test11412 }</div>

3. 无法修改变量名(特殊业务场景)

若因业务限制不能修改变量名,可通过上下文的键值对直接获取变量值,例如假设上下文对象名为ctx:

<div><br>@{ ctx['11412Test'] }</div>

内容的提问来源于stack exchange,提问作者moh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:07:44