使用(yòng)Degister将XML解析爲Bean時(shí),明(míng)明(míng)Bean中的(de)屬性名與XML中的(de)節點名稱一模一樣,但運行時(shí),卻提示:
java.lang.NoSuchMethodException: Bean has no property named ZoneID......,這(zhè)個(gè)ZoneID就是XML中的(de)節點,在Bean中也(yě)設置屬性名也(yě)爲此名,并設置好對(duì)應的(de)setter和(hé)getter方法。
原因是什(shén)麽呢(ne)?
問題原因就出在這(zhè)個(gè)屬性名上,根據JAVA編程命名規則,屬性名最好以小寫字母開頭,所以commons-beanutils包中關于将xml與bean的(de)映射關系處理(lǐ)時(shí),默認使用(yòng)了(le)這(zhè)個(gè)規則,對(duì)于以大(dà)寫開頭的(de)屬性名将不認可(kě)。
隻要将bean的(de)屬性名以小寫字母命名即可(kě),同時(shí)設置好digester方法中的(de)對(duì)應關系,如:
Digester digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("DataSet/diffgr:diffgram/NewDataSet/Area", Area.class);
digester.addBeanPropertySetter("DataSet/diffgr:diffgram/NewDataSet/Area/ZoneID", "zoneID");
OK!問題解決!
|