1. 程式人生 > >Spring+dwr在儲存資料時報錯ERROR [DefaultConverterManager][convertOutbound] No converter found for 'java.lang

Spring+dwr在儲存資料時報錯ERROR [DefaultConverterManager][convertOutbound] No converter found for 'java.lang

今天在除錯一個功能時,出現這麼一個問題:

ERROR [DefaultConverterManager][convertOutbound] No converter found for 'java.lang.reflect.Constructor'
ERROR [DefaultConverterManager][convertOutbound] No converter found for 'java.lang.reflect.Field'
ERROR [DefaultConverterManager][convertOutbound] No converter found for 'java.lang.reflect.Method'
ERROR [DefaultConverterManager][convertOutbound] No converter found for 'java.lang.Package'
ERROR [DefaultConverterManager][convertOutbound] No converter found for 'java.security.ProtectionDomain'
ERROR [DefaultConverterManager][convertOutbound] No converter found for 'sun.reflect.generics.reflectiveObjects.TypeVariableImpl'

頁面報Error marshalling data

非常迷茫,後來先使用dwr的除錯功能,就是訪問:http://server/app/dwr找到對應的模組,手工輸入資料測試對應的方法,發現方法是正常的。說明是在程式中,所傳過去的引數有問題。經過排查,原來該Javabean中有一個屬性是Date型別,而頁面採用ext的方法獲取引數值:var values = actionForm.form.getValues();直接將values值傳給方法,而日期作為字串傳進去,結果無法轉換而報錯,需要使用如下方法對該引數進行賦值values["balanceDate"] = actionForm.form.findField("balanceDate").getValue();。在使用Ext.encode(values)時,如果是日期型別在日期與時間之間有一個T,而字串只有日期部分。

除了使用這個方法外,還有一個方法(更好,推薦):使用getFieldValues()獲取資料,var values = actionForm.form.getFieldValues();

原來如此!