2015-06-27 64 views
1

我是新的春天框架,我試圖在spring.when執行集合概念。當我運行我的波紋管代碼它顯示以下錯誤消息。在春天收集不起作用

引起:org.springframework.beans.NotWritablePropertyException:bean類的無效屬性'classname'[com.collections.subject]:Bean屬性'classname'不可寫或具有無效的setter方法。 setter的參數類型是否與getter的返回類型相匹配?

我試圖解決這個問題,但我無法找到我錯在哪裏。任何人都可以幫我解決這個問題。

main.java

package com.collections; 
import org.springframework.beans.factory.BeanFactory; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
import org.springframework.core.io.Resource; 
import org.springframework.core.io.ClassPathResource; 

public class main { 

    public static void main(String args[]) 
    { 
     Resource res=new ClassPathResource("/config/applicationcontext.xml"); 
     BeanFactory bf=new XmlBeanFactory(res); 

     subject sobj=(subject) bf.getBean("b1"); 
     sobj.show(); 
    } 

} 

subject.java

package com.collections; 
import java.util.*; 

public class subject { 
    private String classname; 
    private int id; 
    private List<String> sub; 

    public String getname() 
    { 
     return classname; 
    } 

    public void setname(String classname) 
    { 
     this.classname=classname; 
    } 




    public int getid() 
    { 
     return id; 
    } 
    public List<String> getlist() 
    { 
     return sub; 
    } 



    public void setid(int id){ 

     this.id=id; 
    } 
    public void setlist(List<String> sub) 
    { 
     this.sub=sub; 
    } 

    public void show() 
    { 
     System.out.println("classname is:"+classname); 
     System.out.println("id is:"+id); 
     System.out.println("available subjects are:"); 

     Iterator<String> itr=sub.iterator(); 

     while(itr.hasNext()) 
     { 
      System.out.println(itr.next()); 

     } 
    } 
} 

的applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

<bean id="b1" class="com.collections.subject"> 
<property name="classname" value="First"></property> 
<property name="id" value="12"></property> 
<property name="sub"> 
<list> 
<value>tamil</value> 
<value>english</value> 
<value>maths</value> 
<value>science</value> 
<value>social</value> 
</list> 
</property> 

    </bean> 
    </beans> 

回答

2

你不會去任何地方,如果你不尊重Java和Java Bean的命名約定:

  • 類以大寫字母
  • 一個屬性名爲foo ,獲得者/設定者是getFoo()setFoo()。不是getfoo()setfoo()。用於保存屬性值的字段的名稱完全不相關。重要的是getter/setter的名字。

您嘗試使用XML來設置bean的屬性類名:

所以春季將尋找一個方法setClassname()。沒有任何,因此錯誤消息。

+0

感謝您的幫助,它工作良好 – KVK

0

檢查通過更換

public void setlist(List<String> sub) 
{ 
    this.sub=sub; 
} 

public void setSub(List<String> sub) 
{ 
    this.sub=sub; 
} 
+0

這一切非常有用謝謝 – KVK