我试图在我的 .properties 文件之一中定义以下属性:
personExpression=${person.surname}
然后由配置类读取:
@Configuration
public class TemplateConfig {
@Autowired
private Environment environment;
public String getPersonExpression() {
return environment.getProperty("personExpression");
}
}
然而,这给出了例外:
java.lang.IllegalArgumentException: Could not resolve placeholder 'person.surname' in string value "${person.surname}"
有没有办法得到getPersonExpression()
返回字符串文字${person.surname}
而不尝试解决它?
要让它工作需要一些相当不直观的语法。
您本质上必须将表达式分成两部分,并将整个表达式包装在父 SpEL 表达式中以连接它们。
如果您将属性值更改为以下内容,它应该可以工作:
personExpression=#{'$' + '{person.surname}'}
这是有效的,因为你正在分割$
字符来自{person.surname}
所以 SpEL 不会尝试将其作为表达式进行计算,因为就其而言,您只是将两个字符串连接在一起。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)