使用(yòng)Degister将XML解析為(wèi)Bean時(sh™✘βí),明(míng)明(míng)Bean中的(de)屬性名與XML中÷δ©π的(de)節點名稱一(yī)模一(yī)樣,但(dàn)運行(xíng)時÷≥&(shí),卻提示:
java.lang.NoSuchMethodException: Bean h★π♥as no property named ZoneID......,這(zhè)個(gβ★ ↔è)ZoneID就(jiù)是(shì)XML中的(de)節點,在Bπ>→ean中也(yě)設置屬性名也(yě)為(wèi)此名,并設置好(hǎ$<o)對(duì)應的(de)setter和(hé)getter方法。
原因是(shì)什(shén)麽呢(ne)?
問(wèn)題原因就(jiù)出在這(zhè)個(gè)屬性名上(s±£hàng),根據JAVA編程命名規則,屬性名最好(hǎo)以小(xiǎ♠↕o)寫字母開(kāi)頭,所以commons-beanutils包中關于≠"↕≥将xml與bean的(de)映射關系處理(lǐ)時(shí),™α&♦默認使用(yòng)了(le)這(zhè)個(gè)規則,對(duì)于以λ<×&大(dà)寫開(kāi)頭的(de)屬性名将不(bù)認可(kě)。
隻要(yào)将bean的(de)屬性名以小(xiǎo)寫字母命名即可(kě)≠α"®,同時(shí)設置好(hǎo)digester方法中的(de)≤≥對(duì)應關系,如(rú):
Digester digester = new Digester(ε ₩★);
digester.setValidating(false);
digester.addObjectCrea"★☆te("DataSet/diffgr:diffgram/NewD✘<ataSet/Area", Area.class);
digester.addBeanPropertySette☆δ£r("DataSet/diffgr:diffgram/NewDataSet/A€'₽♠rea/ZoneID", "zoneID");
OK!問(wèn)題解決!
|