OGNL 入门 - 使用 OGNL 来实现页面数据填充功能

本贴最后更新于 2541 天前,其中的信息可能已经时异事殊

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();
    }
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • ognl
    2 引用 • 7 回帖
  • 页面数据填充
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...