java - 为什么 SpEL 不支持 unicode 变量?如何解决?

标签 java spring unicode el spring-el

代码优先

@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/

相关文章:

java - Spring 启动 : read from yaml using @ConfigurationProperties not working with @Data

java - 仪表化哈希集和重写 add 和 addAll

regex - 如何在 Perl 中仅匹配 Unicode 字符串中的完全组合字符?

java - 展开时如何使 JMenu 执行某些操作?

Java Spring Boot Hibernate、JPA、MVC、REST混淆

java - 如何使用两个属性作为key的spring缓存

java - MongoDB + Spring 集成

perl - 如何检测和报告对于使用 Perl 进行交换不合法的 Unicode 代码点?

javascript - 使用 Number.toLocaleString() 的货币格式差异

java - 在 dataproc 上运行的 java 软件中升级 google-cloud 库后,库发生冲突