OGNL 入门
什么是 OGNL
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。
摘自[百度百科](https://baike.baidu.com/item/OGNL/10365326?fr=aladdin)
这里只探讨java中OGNL包的使用
使用 OGNL 来实现页面数据填充功能
将页面模板中${{{XXX}}}的XXX作为OGNL表达式并使用其值替换
核心代码
public String renderString(String source, Map<String, Object> context, Map<String, Object> data) throws OgnlException {
Pattern pattern = Pattern.compile(DELIM);
Matcher matcher = pattern.matcher(source);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
String e = matcher.group(1);
if (e == null || "".equals(e)) throw new NullPointerException("expression can not be null");
Object value = Ognl.getValue(e, context, data);
String str = null == value ? "null" : value.toString();
str = str.replaceAll("\\\\", "\\\\\\\\").replaceAll("\\$", "\\\\\\\\$"); // \\\\\\\\ = \\
matcher.appendReplacement(buffer, str);
}
matcher.appendTail(buffer);
return buffer.toString();
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于