OGNL setValue 目标为空

Posted

技术标签:

【中文标题】OGNL setValue 目标为空【英文标题】:OGNL setValue target is null 【发布时间】:2011-09-08 15:15:21 【问题描述】: 公共类客户 私人用户用户; 私有字符串名称; 公共用户 getUser() 返回用户; 公共无效setUser(用户用户) this.user = 用户; 公共字符串 getName() 返回名称; 公共无效集合名称(字符串名称) this.name = 名称; 公共类用户 私有字符串名称; 公共字符串 getName() 返回名称; 公共无效集合名称(字符串名称) this.name = 名称; 公共静态无效主要(字符串[]参数) 尝试 客户客户=新客户(); 对象树 = Ognl.parseExpression("user.name"); Ognl.setValue(树,客户,“你好”); 捕捉(OgnlException e) e.printStackTrace(); ognl.OgnlException: setProperty(null, "name", hello) 的目标为空 如何让ognl自动创建用户。

【问题讨论】:

【参考方案1】:

试试这个

public static void main(String[] args) 
    try 
        Customer customer = new Customer();
        User user = new User();
        customer.setUser(user);

        Object tree = Ognl.parseExpression("user.name");

        Ognl.setValue(tree, customer, "hello");

     catch (OgnlException e) 
        e.printStackTrace();
    

您的示例代码的问题是您的实例“客户”有一个空用户。所以OGNL本质上是调用customer.getUser().setName("hello"),其中"customer.getUser()"返回null。

【讨论】:

以上是关于OGNL setValue 目标为空的主要内容,如果未能解决你的问题,请参考以下文章

setValue: forKey: 和 setValue: forKeyPath:

InvalidFirebaseData',原因:'(setValue:)

setValue和setObject的区别

setValue和setObject的区别

setValue 和 setObject 的区别

setValue和setObject的区别