2011-12-01 68 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