使用BeanUtils時(shí)Date類型值為空的解決方法_第1頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、使用beanutils時(shí),date類型值為空的解決方法mons.beanuti.conversionexception: no value specifi for date 現(xiàn)在系統(tǒng)里原先不出錯(cuò)的地方老是浮現(xiàn)以上這個(gè)錯(cuò)誤,不知道什么緣由。也都是beanutils.copyproperties(teainfo, infofo);這種語句出的錯(cuò)。 今日查了一上午,找到了它的使用,本來它是一種反射機(jī)制,用法copyproperties可以復(fù)制bean,不必重復(fù)寫無數(shù)屬性,只是效率不高。 1, beanutils.copyproperties(dest, orig); 這種copy是淺拷貝,復(fù)制后的2

2、個(gè)bean的同一個(gè)屬性可能擁有同一個(gè)對(duì)象的ref,這個(gè)在用法時(shí)要當(dāng)心,特殊是對(duì)于屬性為自定義類的狀況.還要屬性為集合類的狀況。當(dāng)心hibernate的set 2,beanutils.copyproperties與propertyutils.copyproperties的區(qū)分 這兩個(gè)類幾乎有一摸一樣的功能,唯一的區(qū)分是:beanutils在對(duì)bean賦值是會(huì)舉行類型轉(zhuǎn)化。舉例來說也就是在copyproperty時(shí)只要屬性名相同,就算類型不同,beanutils也可以舉行copy;而propertybean則可能會(huì)報(bào)錯(cuò)。固然2個(gè)bean之間的同名屬性的類型必需是可以轉(zhuǎn)化的,否則用beanutils

3、一樣會(huì)報(bào)錯(cuò)。 若實(shí)現(xiàn)了mons.beanutils.converter接口則可以自定義類型之間的轉(zhuǎn)化。 除beanutils外還有一個(gè)名為propertyutils的工具類,它也提供copyproperties()辦法,作用與beanutils的同名辦法非常相像,主要的區(qū)分在于后者提供類型轉(zhuǎn)換功能,即發(fā)覺兩個(gè)javabean的同名屬性為不同類型時(shí),在支持的數(shù)據(jù)類型范圍內(nèi)舉行轉(zhuǎn)換,而前者不支持這個(gè)功能,但是速度會(huì)更快一些 http:/xiaozhao- 注重:有人說beanutils支持的轉(zhuǎn)換類型不包括java.util.date? 我用1.6.1版本試了beanutils.copyproper

4、ties,絕對(duì)是支持java.util.date的。 3,lazydynabean可以實(shí)現(xiàn)動(dòng)態(tài)的vo。 這樣,有時(shí)候程序給view層的東西就可以用它來封裝而不用特地建一個(gè)多余的vo類了。 beanutils.copyproperties與propertyutils.copyproperties使用及區(qū)分 一、簡介: beanutils提供對(duì)java反射和自省api的包裝。其主要目的是利用反射機(jī)制對(duì)javabean的屬性舉行處理。我們知道,一個(gè)javabean通常包含了大量的屬性,無數(shù)狀況下,對(duì)javabean的處理導(dǎo)致大量get/代碼積累,增強(qiáng)了代碼長度和閱讀代碼的難度。 二、使用: bean

5、utils是這個(gè)包里比較常用的一個(gè)工具類,這里只介紹它的copyproperties()辦法。該辦法定義如下: public ic vo copyproperties(java.lang.object dest,java.lang.object orig) throws java.lang.illegalaccessexception, java.lang.reflect.invoiontargetexception 假如你有兩個(gè)具有無數(shù)相同屬性的javabean,一個(gè)很頻繁的狀況就是suts里的po對(duì)象(持久對(duì)象)和對(duì)應(yīng)的actionform,例如 teacher和teacherform。我

6、們普通會(huì)在action里從actionform構(gòu)造一個(gè)po對(duì)象,傳統(tǒng)的方式是用法類似下面的語句對(duì)屬性逐個(gè)賦值: /得到teacherform teacherform teacherform=(teacherform)form; /構(gòu)造teacher對(duì)象 teacher teacher=new teacher(); teacher.setname(teacherform.getname(); teacher.setage(teacherform.getage(); teacher.setgender(teacherform.getgender(); teacher.setmajor(teache

7、rform.getmajor(); teacher.setdepartment(teacherform.getdepartment(); /持久化teacher對(duì)象到數(shù)據(jù)庫 hibernatedao.save(teacher); 而用法beanutils后,代碼就大大改觀了,如下所示: /得到teacherform teacherform teacherform=(teacherform)form; /構(gòu)造teacher對(duì)象 teacher teacher=new teacher(); beanutils.copyproperties(teacher,teacherform); /持久化tea

8、cher對(duì)象到數(shù)據(jù)庫 hibernatedao.save(teacher); 假如teacher和teacherform間存在名稱不相同的屬性,則beanutils不對(duì)這些屬性舉行處理,需要程序員手動(dòng)處理。例如 teacher包含modifydate(該屬性記錄最后修改日期,不需要用戶在界面中輸入)屬性而teacherform無此屬性,那么在上面代碼的 copyproperties()后還要加上一句: teacher.setmodifydate(new date(); 怎么樣,很便利吧!除beanutils外還有一個(gè)名為propertyutils的工具類,它也提供copyproperties(

9、)辦法,作用與 beanutils的同名辦法非常相像,主要的區(qū)分在于后者提供類型轉(zhuǎn)換功能,即發(fā)覺兩個(gè)javabean的同名屬性為不同類型時(shí),在支持的數(shù)據(jù)類型范圍內(nèi)舉行轉(zhuǎn)換,而前者不支持這個(gè)功能,但是速度會(huì)更快一些。beanutils支持的轉(zhuǎn)換類型如下: * java.lang.bigdecimal * java.lang.biginteger * boolean and java.lang.boolean * byte and java.lang.byte * char and java.lang.character * java.lang.class * double and java.la

10、ng.double * float and java.lang.float * int and java.lang.integer * long and java.lang.long * short and java.lang.short * java.lang.string * java.sql.date * java.sql.time * java.sql.timestamp 這里要注重一點(diǎn),java.util.date是不被支持的,而它的子類java.sql.date是被支持的。因此假如對(duì)象包含時(shí)光類型的屬性,且希翼被轉(zhuǎn)換的時(shí)候,一定要用法java.sql.date類型。否則在轉(zhuǎn)換時(shí)會(huì)提

11、醒a(bǔ)rgument mistype異樣。 三、優(yōu)缺點(diǎn): apache jakarta commons項(xiàng)目十分實(shí)用。我曾在許多不同的項(xiàng)目上或挺直或間接地用法各種流行的commons組件。其中的一個(gè)強(qiáng)大的組件就是beanutils。我 將解釋如何用法beanutils將local實(shí)體bean轉(zhuǎn)換為對(duì)應(yīng)的value 對(duì)象: beanutils.copyproperties(avalue, alocal) 上面的代碼從alocal對(duì)象復(fù)制屬性到avalue對(duì)象。它相當(dāng)容易!它不管local(或?qū)?yīng)的value)對(duì)象有多少個(gè)屬性,只管舉行復(fù)制。我們假設(shè) local對(duì)象有100個(gè)屬性。上面的代碼使我們可以無需鍵入起碼100行的冗長、簡單出錯(cuò)和反復(fù)的get和set辦法調(diào)用。這太棒了!太強(qiáng)大了!太實(shí)用 了! 現(xiàn)在,還有一個(gè)壞消息:用法beanutils的成本驚人地昂貴!我做了一個(gè)容易的測試,beanutils所花費(fèi)的時(shí)光要超過取數(shù) 據(jù)、將其復(fù)制到對(duì)應(yīng)的 value對(duì)象(通過手動(dòng)調(diào)用get和set辦法),以及通過串行化將其返回到遠(yuǎn)程的客戶機(jī)的時(shí)光總和。所以要當(dāng)心用法這種威

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論