2011-12-01 67 views
4

在java中,公共BeanUtils的,尝试设置属性“地址”和“creditCardList”来反对,但它给了我错误:apache commons beanutils,如何设置属性值?

java.lang.NoSuchMethodException: Property 'address' has no setter method in class 'class com.dao.Student' 

,但我有这个方法存在。该代码是在这里:

public class Main { 
    public static void main(String[] args) { 
     Object student = new Student("John");  
     Object address = new Address("NJ"); 

     try { 
      PropertyUtils.setProperty(student, "address", address);   
      //---------- 
      List list = new ArrayList(); 
      Object creditCard = new CreditCard(); 
      list.add(creditCard); 

      PropertyUtils.setProperty(student, "creditCardList", list);   

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

class Student { 
    private String name;   
    private Address address;  
    private List<CreditCard> creditCardList;  
    public Student(String name) { 
     super(); 
     this.name = name; 
    } 
    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 List<CreditCard> getCreditCardList() { 
     return creditCardList; 
    } 
    public void setCreditCardList(List<CreditCard> creditCardList) { 
     this.creditCardList = creditCardList; 
    } 
} 

class Address { 
    private String name; 
    public Address(String name) { 
     super(); 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

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

class CreditCard{ 
    private String cardName; 

    public String getCardName() { 
     return cardName; 
    } 

    public void setCardName(String cardName) { 
     this.cardName = cardName; 
    } 
} 

回答

4

我搬到学生到自己的文件,并使其公开,也工作得很好:)

+0

不,方法在那里定义。 – user595234

6

你的班级的学生应该是一个公共类,尝试使公众并重新运行代码。

+1

我不认为它需要一个默认的构造函数。如果你只是将该类移到它自己的文件并公开它,它就可以工作。 –

+0

同意:)感谢您的审查。 +1 – mprabhat

+0

你知道为什么吗?谢谢 – user595234