获取嵌套属性时没有此类方法异常

问题描述 投票:1回答:1

我已经使用以下属性定义了一个Employee对象

public class Employee {

    private String id;
    private String name;
    private Address address;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}

地址对象:

public class Address {

    private String street;
    private String city;

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

并为属性生成了getter和setter。当我在属性上执行以下操作时:

String value = BeanUtils.getNestedProperty(employee, "address.street");

我为address.street得到了“No Such Method Exception”。

java.lang.NoSuchMethodException:类com.test.xm.Employee'上的未知属性'address.street'

字段ID和名称工作正常。

双重检查了吸气剂和制定者,看起来很好。我可能在这里做错了什么?

编辑:更新了getter和setter。

java exception javabeans nosuchmethod
1个回答
4
投票

使用PropertyUtils而不是BeanUtils

   (String) PropertyUtilsBean.getInstance().getNestedProperty(employee, "address.street");  

对我来说,你的榜样也很好。所以在你的例子中,唯一可能的错误是:employee不是Employee的实例。

另外,为什么不发布异常消息?它们包含非常有用的信息,例如:

 java.lang.NoSuchMethodException: Unknown property 'address' on class 'class com.mycompany.dto.Address'
© www.soinside.com 2019 - 2024. All rights reserved.