代码优先
@Test
public void tryUnicode()
{
SpelExpressionParser parser = new SpelExpressionParser();
Object rootObject = new Object()
{
public String getName()
{
return "wener";
}
public String get名字()
{
return getName();
}
};
// ok
assert parser.parseExpression("name").getValue(rootObject).equals("wener");
// not ok
assert parser.parseExpression("名字").getValue(rootObject).equals("wener");
}
有些时候我们只需要一个unicode名称,它对我们在模板中的自定义更友好。 SpEL 简单易用且内置,我不想使用其他 EL 解决方案,我该如何解决这个问题?
编辑
在org.springframework.expression.spel.standard.Tokenizer#isIdentifier
中,它们只接受isAlphabetic(ch) ||是数字(ch)|| ch == '_' || ch == '$';
不支持 unicode,但 java 标识符允许 unicode,很遗憾。
最佳答案
您可以修改它 - 根据需要检查和修改源代码。或者您可以创建问题,或 fork 存储库,添加 Unicode 支持并提交拉取请求。没有别的办法。 至于为什么,我自己也想知道。
关于java - 为什么 SpEL 不支持 unicode 变量?如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24631101/