OGNL setValue target is null - PullRequest
       7

OGNL setValue target is null

1 голос
/ 05 июня 2011
public class Customer {
    private User user;
    private String name;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

public class User {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}


public static void main(String[] args) {
        try {
            Customer customer = new Customer();

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

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

        } catch (OgnlException e) {
            e.printStackTrace();
        }
}

ognl.OgnlException: target is null for setProperty(null, "name", hello)

how to let ognl to create user auto.

1 Ответ

1 голос
/ 05 июня 2011

Попробуйте это

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

Проблема с вашим примером кода состоит в том, что у вашего экземпляра "customer" есть нулевой пользователь.Таким образом, OGNL по сути вызывает customer.getUser (). SetName ("hello"), где customer.getUser () "возвращает ноль.

...