鏃㈢劧鏄Struts婧愪唬鐮侊紝涓轟粈涔堣璁睠ommons-Beanutils鍖呭憿錛熷師鍥犲緢綆鍗曪紝Struts鐨凞ynaFormBean灝辨槸閫氳繃榪欎釜鍖呴噷鐨勭浉鍏崇被瀹炵幇鐨勩傚悓鏍鳳紝鐣欎笅鎴戠殑閭錛屾柟渚垮拰澶у鍏卞悓浜ゆ祦銆傛垜鐨勯偖綆辨槸錛歮ariah_fan@hotmail.com銆?BR>
Commons-Beanutils錛堜竴錛?Commons-Beanutils 榪欎釜鏄痡akarta commons欏圭洰涓殑涓涓瓙欏圭洰銆傝繖涓」鐩紑鍙戠殑鐩殑鏄府鍔╁紑鍙戣呭姩鎬佺殑鑾峰彇/璁懼糐ava Bean鐨勫睘鎬э紝鍚屾椂瑙e喅姣忔閮借鍐檊etXXX鍜宻etXXX鐨勯夯鐑︺?BR>
涓銆乆XXConvert榪欎簺綾婚兘瀹炵幇Converter鎺ュ彛錛屾彁渚涙妸value鍊艱漿鍖栨垚涓虹浉搴擷XX綾葷殑瀹炵幇銆傜幇鍦ㄥ彧閽堝鍥涚綾誨瀷錛氭暟瀛楋紝鏃墮棿錛孊oolean鍜孲tring銆傚湪Converter 鎺ュ彛涓彧鏈変竴涓柟娉昪onvert(Class type, Object value)錛屾妸value瀵硅薄杞崲涓簍ype鎵瑕佹眰鐨勭被銆俋XXConvert綾諱腑榪欎釜鏂規硶鐨勬濊礬鏄細
1銆佸鏋渧alue==null錛屽茍涓旇嚜宸卞唴閮ㄦ湁緙虹渷鐨勫奸偅涔堝氨榪斿洖榪欎釜緙虹渷鐨勫箋傚鏋滄病鏈夌己鐪佸鹼紝灝辨姏鍑篊onversionException寮傚父銆?BR>2銆佸鏋渧alue instanceOf XXX綾伙紝閭d箞灝辯洿鎺ヨ繑鍥瀡alue銆?BR>3銆佸鏋滀笂闈㈢殑閮戒笉琛岋紝閭d箞璋冪敤new XXX(value.toString())鎴栬匵XX.valueOf(value.toString())鏂規硶鏉ヨ繑鍥炪傝漿鍖栧け璐ユ椂錛屾姏鍑篊onversionException寮傚父銆?BR>
浜屻佺壒孌婄殑瀹炵幇1銆佸浜嶤lassConverter綾伙紝褰撹繘鍏ョ涓夌鎯呭艦鐨勬椂鍊欙紝瀹為檯鎵ц鐨勬槸
ClassLoader classLoader =Thread.currentThread().getContextClassLoader();
if (classLoader == null) {
classLoader = ClassConverter.class.getClassLoader();
}
return (classLoader.loadClass(value.toString()));
2銆佸浜嶣ooleanConverter綾伙紝褰撹繘鍏ョ涓夌鎯呭艦鐨勬椂鍊欙紝瀹為檯鎵ц鐨勬槸錛屾牴鎹畍alue.toString()鐨勫鹼細yes錛寉錛宼rue, on, 1 榪斿洖true錛沶o錛宯錛宖alse錛宱ff錛? 榪斿洖false銆傚鏋滆繖浜涙儏褰㈤兘涓嶇鍚堬紝騫朵笖鏈夌己鐪佸肩殑鏃跺欏垯榪斿洖緙虹渷鍊箋傚惁鍒欐姏鍑篊onversionException錛?BR>
涓夈乆XXArrayConverter榪欎簺綾葷戶鎵胯嚜AbstractArrayConverter綾匯?AbstractArrayConverter 瀹為檯鍙疄鐜頒簡涓涓狶ist parseElements(String svalue)鏂規硶銆傝繖涓柟娉曟帴鍙楃殑鏄瘂value1, value2,...}鏍煎紡鐨勫瓧絎︿覆錛岄愪釜瑙f瀽鍑烘潵鍚庯紝鏀懼叆涓涓狝rrayList涓傚畠閫氳繃StreamTokenizer瑙f瀽瀛楃涓詫細StreamTokenizer鏄敤鏉ュ垎紱籭nput stream涓鍙栫殑瀛楃涓詫紝騫朵笖鍙互鏍規嵁鏍囪鍖哄垎涓嶅悓鐨勫唴瀹癸紝姣斿鏁板瓧錛屽瓧絎︽垨鑰呮敞閲娿俋XXArrayConverter鐢變簬瑕佽漿鎹㈢殑鏄竴涓暟緇勶紝鎵浠onvert(....)鏂規硶鐨勫疄鐜拌繃紼嬫湁鎵涓嶅悓銆?BR>1銆佸鏋渧alue==null錛屽茍涓旇嚜宸卞唴閮ㄦ湁緙虹渷鐨勫奸偅涔堝氨榪斿洖榪欎釜緙虹渷鐨勫箋傚鏋滄病鏈夌己鐪佸鹼紝灝辨姏鍑篊onversionException寮傚父銆?BR>2銆佸鏋渕odel.getClass() == value.getClass()錛岄偅涔堝氨鐩存帴榪斿洖value銆?BR>3銆佸鏋滀笂闈㈢殑閮戒笉琛岋紝閭d箞灝遍氳繃parseElements(value.toString())鐢熸垚涓涓暟緇勶紝鍐嶅鏁扮粍鐨勫厓绱犻愪釜璋冪敤new XXX(list.get(i))鎴栬匵XX.valueOf(list.get(i))鏂規硶錛岃漿鎹㈡垚涓烘暟緇勫鍏冪礌瑕佹眰鐨勭被鍨嬨傝漿鍖栧け璐ユ椂錛屾姏鍑篊onversionException寮傚父銆?BR>
Commons-Beanutils錛堜簩錛?涓銆丩ocaleConverter 涓?BaseLocaleConverterLocaleConverter緇ф壙鑷?Converter鎺ュ彛錛屽畾涔変簡涓涓柊鏂規硶convert(Class type, Object value, String pattern)銆?BR>鎶借薄綾籅aseLocaleConverter瀹炵幇浜哃ocaleConverter鎺ュ彛銆傚畠鐨刲ocPattern灞炴х敤鏉ヨ〃紺鴻繖涓璞$殑pattern鏄惁鏄湰鍦板寲鐨勬牸寮忋俻atttern 鏄寚鎶婁綍縐嶆牸寮忕殑鏃墮棿鎴栬呮暟瀛楀艱漿鎹㈡垚鏍囧噯鍊箋俢onvert(...)鐨勬墽琛岃繃紼嬫槸錛?BR>1銆佸鏋渧alue==null錛屽茍涓旇嚜宸卞唴閮ㄦ湁緙虹渷鐨勫奸偅涔堝氨榪斿洖榪欎釜緙虹渷鐨勫箋傚鏋滄病鏈夌己鐪佸鹼紝灝辨姏鍑篊onversionException寮傚父銆?BR>2銆佹牴鎹弬鏁皃attern鍊兼槸鍚︿負null錛岃皟鐢╬arse(Object value, String pattern)鏂規硶錛氬鏋滆繖涓弬鏁頒笉涓簄ull閭d箞灝變嬌鐢ㄨ繖涓弬鏁扮殑鍊鹼紝鍚﹀垯浣跨敤瀵硅薄棰勫瓨鐨刾attern鍊箋傚鏋滆繖
鏍峰仛寮曡搗浜嗗紓甯革紝浼氶鍏堝垽鏂槸鍚﹁兘澶熻繑鍥炵己鐪佺殑鍊鹼紝涓嶈兘鍒欐姏鍑篊onversionException寮傚父銆?BR>3銆乸arse(Object value, String
pattern)鏂規硶鐨勫疄鐜拌鎶涜嚦緇ф壙浜嗗畠鐨勭被鍏蜂綋瀹炵幇銆傝繖涓柟娉曡櫧鐒舵妸value鍊艱〃榪頒負Object綾誨瀷錛屼絾鏄渶鍚庨兘鏄氳繃寮哄埗杞崲錛岃漿鎹㈡垚涓篠tring綾誨瀷銆備篃灝辨槸璇村畠瀹為檯涓婇渶瑕佺殑
鏄疭tring綾誨瀷鐨剉alue銆?BR>
浜屻?XXXLocaleConverter鎶妏attern鏍煎紡鐨剉alue杞崲鎴愭爣鍑嗘牸寮忕殑鐩稿簲鐨刋XX綾匯傝繖浜涚被鍙互鍒嗕負涓ゅぇ綾伙細涓綾諱負鏃墮棿錛屼竴綾諱負鏁板箋?BR>1銆佹椂闂寸被鏈鍚庨兘浼氶氳繃SimpleDateFormat綾誨鍊艱繘琛岃漿鎹紝紼嬪簭濡備笅錛?BR>
if(pattern == null) {
pattern = locPattern ? new SimpleDateFormat().toLocalizedPattern() :
new SimpleDateFormat().toPattern();
}
SimpleDateFormat format = new SimpleDateFormat(pattern, locale);
if (locPattern) {
formatter.applyLocalizedPattern(pattern);
}else {
formatter.applyPattern(pattern);
}
return formatter.parse((String) value);
2銆佹暟鍊肩被鏈鍚庨兘浼氶氳繃DecimalFormat綾誨鍊艱繘琛岃漿鎹紝紼嬪簭濡備笅錛?BR>
DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(locale);
if (pattern != null) {
if (locPattern) {
formatter.applyLocalizedPattern(pattern);
} else {
formatter.applyPattern(pattern);
}
}
return formatter.parse((String) value);
榪欎釜杞寲榪囩▼瑕佹敞鎰忕簿搴︾殑闂銆傜敱浜嶯umber綾繪槸鎵鏈夌殑鏁板肩被鐨勭埗綾伙紝鎵浠ヨ漿鎹㈠畬鎴愬悗瑕佹鏌ユ渶鍚庣殑緇撴灉鏄惁鏄綋鍓嶈姹傜殑綺懼害錛氬鏋滃ぇ浜庢墍瑕佹眰鐨勭簿搴︼紝鍒欐姏鍑篊onversionException寮傚父銆?BR>
Commons-Beanutils錛堜笁錛?/B>
Dyna寮澶寸殑綾伙紝鏄笓闂ㄤ負DynaFormBean鑰岃璁$殑銆?BR>
涓銆丏ynaBean錛孌ynaClass 涓?DynaProperty
DynaBean騫朵笉鏄疛ava涓墍瀹氫箟鐨凚ean錛岃屾槸涓縐嶁滃亣鈥濈殑Bean銆傚洜涓哄畠騫朵笉鏄氳繃getXXX鍜宻etXXX鏂規硶錛屽XXX灞炴ц繘琛屽彇鍊煎拰璁懼肩殑銆傚畠閫氳繃涓涓疄鐜頒簡DynaClass鎺ュ彛鐨勭被錛屽府鍔╃鐞嗗叾鎵鏈夌殑灞炴х殑綾誨埆錛岃岃嚜宸卞垯綆$悊瀵筙XX灞炴у肩殑璁懼畾鍜岃幏鍙栥傚湪璁懼肩殑鏃跺欎細閫氳繃涓巒ame瀵瑰簲鐨凞ynaProperty瀵硅薄錛屾鏌ヨ祴鍊肩殑綾誨埆鏄惁姝g‘銆?BR>DynaProperty綾繪弿榪扮殑鏄疍ynaBean涓墍鍖呭惈鐨勫睘鎬х殑綾誨瀷銆侱ynaProperty綾繪湁涓変釜灞炴э細灞炴х殑鍚嶇О錛歯ame錛屽睘鎬х殑鍚嶇О錛泃ype錛屽睘鎬х殑綾誨埆錛沜ontentType錛屽鏋淒ynaProperty鎻忚堪鐨勬槸涓鍣ㄥ璞?List鎴栬匨ap)錛岄偅涔堣繖涓猚ontentType灝變唬琛ㄨ繖涓鍣ㄥ唴鍏冪礌鐨勭被鍒傝繖涓被鍊煎緱鍏蟲敞鐨勫湴鏂規槸writeObject鍜宺eadObject鏂規硶鐨勫疄鐜般傚畠浼氶鍏堝垽鏂嚜宸辯殑type鏄惁鏄竴涓猵rimitive鐨勭被錛屽鏋滄槸錛屽垯鍏堝啓鍏rue鏍囧織錛屽啀鍐欏叆瀵瑰簲鐨刾rimitive綾葷殑緙栧彿錛涘惁鍒欏啓鍏alse鏍囧織錛屽啀鍐欏叆type銆傚洜涓哄湪璋冪敤readObject鏂規硶鏃訛紝濡傛灉寰楀嚭鐨勬槸primitive綾誨瀷錛屽垯type鐨勫間負XXX.TYPE鑰屼笉鏄疿XX.class銆?BR>DynaClass 鏄竴涓帴鍙o紝鐢ㄦ潵綆$悊DynaBean涓墍鏈夌殑DynaProperty灞炴с?BR>
浜屻丅asiceDyanBean 涓?BasicDynaClass
BasiceDyanBean 瀹炵幇鑷狣ynaBean鎺ュ彛銆傚畠鍖呭惈涓涓疄鐜頒簡DynaClass鎺ュ彛鐨勭被鐨勫璞★紝鍜屼竴涓敤鏉ュ瓨鏀懼肩殑HashMap銆傝繖涓狧ashMap鐨刱ey涓嶥ynaClass涓璈ashMap鐨刱ey鏄竴涓瀵瑰簲鐨勩?BR>BasicDynaClass 瀹炵幇浜咲ynaClass鎺ュ彛錛屼互DynaProperty鐨刵ame涓簁ey淇濆瓨鎵鏈夎繖浜汥ynaProperty瀵硅薄銆傚畠閫氳繃newInstance鏂規硶鍔ㄦ佺敓鎴愬疄鐜頒簡DynaBean鎺ュ彛鐨勭被鐨勫璞★紱娉ㄦ剰榪欎釜綾繪槸鍙互鍔ㄦ佹寚瀹氱殑錛屽鏋滄病鏈夛紝閭d箞灝辨槸榛樿鐨凚asicDynaBean綾匯傚姩鎬佹寚瀹氱被鏄氳繃鍙嶅皠瀹炵幇鐨勶紝紼嬪簭濡備笅錛?BR>//dynaBeanClass涓轟換鎰忕殑瀹炵幇浜咲ynaBean鎺ュ彛鐨勭被錛宑onstructorTypes涓鴻繖涓?BR>//綾葷殑鏋勯犳柟娉曟墍闇瑕佺殑鍙傛暟鐨勭被鍨?BR>constructor = dynaBeanClass.getConstructor(constructorTypes);
//constructorValues涓烘瀯閫犳柟娉曠殑鍙傛暟鍊鹼紝瀹為檯涓婂畠鐨勫間負褰撳墠鐨凚asicDynaClass
return ((DynaBean) constructor.newInstance(constructorValues));
Commons-Beanutils錛堝洓錛?/B>
涓銆丆onvertUtils 鍜?ConvertUtilsBean
ConvertUtils 鏄疌onvertUtilsBean綾葷殑涓涓畝鍗曞皝瑁咃紝鍗矯onvertUtils涓殑鎵鏈夋柟娉曢兘鏄氳繃鐩存帴璋冪敤ConvertUtilsBean涓殑鍚屽悕鏂規硶瀹炵幇鐨勩傚鏋滀綘闇瑕佹洿澶嶆潅鐨勫姛鑳斤紝灝變嬌鐢–onvertUtilsBean錛屽惁鍒欎嬌鐢–onvertUtils銆?BR>ConvertUtilsBean 閫氳繃涓涓狧ashMap綆$悊鎵鏈夌殑XXXConverter銆傝繖涓狧ashMap鐨刱ey涓篨XX鐨勭被鍏ㄥ悕錛屽間負鐩稿簲鐨刋XXConverter瀵硅薄銆傞氳繃deregister()鏂規硶錛屽垵濮嬪寲榪欎釜HashMap銆傝繖涓垵濮嬪寲鏂規硶浼氫負姣忎竴涓猉XXConverter綾繪彁渚涗竴涓己鐪佺殑鍊箋傜敤鎴峰彲浠ュ姩榪噑etDefaultXXX(...)鏂規硶鏉ヨ嚜琛岃緗甔XXConverter瀵硅薄鐨勭己鐪佸箋傝繖涓被榪樻彁渚涗簡convert(...)鏂規硶錛屽String value榪涜鐩稿簲鐨勮漿鍖栥?BR>
浜屻丳ropertyUtils 鍜?PropertyUtilsBean
PropertyUtils 鏄疨ropertyUtilsBean綾葷殑涓涓畝鍗曞皝瑁咃紝鍚屾牱瀹冪殑鎵鏈夋柟娉曢兘鏄氳繃鐩存帴璋冪敤PropertyUtilsBean 涓悓鍚嶆柟娉曞疄鐜扮殑銆?BR>PropertyUtilsBean 瀵笵ynaBean鎴栬呬竴涓猨ava鏍囧噯Bean涓殑灞炴у姩鎬佺殑璧嬪煎拰鍙栧?闈為氳繃getXXX鍜宻etXXX鏂規硶)銆?BR>1銆佽繖涓被鏀寔澶氬眰宓屽錛屾瘮濡傦細XXX[i].YYY(key).ZZZ錛岄偅涔堝畠浼氫負浣犲緱鍒版垨鑰呰緗甖ZZ鐨勫睘鎬с?BR>2銆佹墍鏈夌殑set/get鏂規硶浠嬬粛錛?BR>//瀵筙XX(key)鏍煎紡鐨刵ame璁懼?BR>setMappedProperty(Object bean, String name,String key, Object value)
//瀵筙XX[i]鏍煎紡鐨刵ame璁懼?BR>setIndexedProperty(Object bean, String name, int index, Object value)
//瀵筙XX鏍煎紡鐨刵ame璁懼?BR>setSimpleProperty(Object bean, String name, Object value)
//瀵筙XX(key).YYY[i].ZZZ鏍煎紡鐨勫悕縐拌鍊箋傛敞鎰忥紝name蹇呴』瑕侀伒鐓ц繖縐嶆牸寮忋?BR>//榪欎釜鏂規硶瀹為檯鍋氱殑灝辨槸浠モ?鈥濅負鍒嗛殧絎︼紝閫愬眰鐨勬牴鎹儏鍐靛垎鍒皟鐢ㄤ笂闈㈢殑鍑犱釜鏂規硶錛?BR>//鑾峰彇鐩稿簲鐨刡ean銆?BR>setNestedProperty(Object bean, String name, Object value)
//瀹冪洿鎺ヨ皟鐢╯etNestedProperty鏂規硶
setProperty(Object bean, String name, Object value)
3銆乬etPropertyType(Object bean, String name)鏂規硶涓敤鏉ヨ幏鍙朆ean鐨勬煇涓涓猵roperty鐨勭被鍨嬬殑浠g爜錛?BR>PropertyDescriptor descriptor = getPropertyDescriptor(bean, name);
if (descriptor == null) {
return (null);
}else if (descriptor instanceof IndexedPropertyDescriptor) {
return (((IndexedPropertyDescriptor) descriptor).getIndexedPropertyType());
} else if (descriptor instanceof MappedPropertyDescriptor) {
return (((MappedPropertyDescriptor) descriptor).getMappedPropertyType());
} else {
return (descriptor.getPropertyType());
}
4銆乬etIndexedProperty(Object bean, String name, int index)
榪欎釜鏂規硶鐢ㄦ潵鑾峰彇涓涓暟緇勬垨鑰呬竴涓狶ist涓殑灞炴с傚畠浼氶鍏堢湅榪欎釜bean鏄惁鏄疍ynaBean綾誨瀷鐨勶紝濡傛灉鏄紝鍐嶅叾媯鏌ユ槸鍚︽湁name榪欎釜灞炴э紝濡傛灉鏈夐偅涔堝氨鐩存帴璋冪敤get(String name, int index)鏂規硶榪斿洖鍊鹼紱濡傛灉涓嶆槸DynaBean綾誨瀷錛岄偅涔堝氨浼氭墽琛屽涓嬫柟娉曪細
//鏈夋病鏈変負鏁扮粍鐨勬煇涓壒瀹氬厓绱犲彇鍊肩殑鏂規硶
if (descriptor instanceof IndexedPropertyDescriptor) {
Method readMethod = ((IndexedPropertyDescriptor) descriptor).
getIndexedReadMethod();
if (readMethod != null) {
Object subscript[] = new Object[1];
subscript[0] = new Integer(index);
return (invokeMethod(readMethod,bean, subscript));
}
}
// 濡傛灉娌℃湁錛屽氨鍏堝彇鍑烘暣涓璞?BR>Method readMethod = getReadMethod(descriptor);
if (readMethod == null) {
throw new NoSuchMethodException("Property '" + name +
"' has no getter method");
}
Object value = invokeMethod(readMethod, bean, new Object[0]);
//濡傛灉榪欎釜瀵硅薄瀹為檯涓婃槸涓涓狶ist錛岄偅涔堣皟鐢╣et()鏂規硶
if (!value.getClass().isArray()) {
if (!(value instanceof java.util.List)) {
throw new IllegalArgumentException("Property '" + name
+ "' is not indexed");
} else {
//get the List's value
return ((java.util.List) value).get(index);
}
//鍚﹀垯閫氳繃Array綾繪彁渚涚殑鐩稿簲鏂規硶鍙栧?BR>} else {
//get the array's value
return (Array.get(value, index));
}
涓夈丅eanUtil 鍜?BeanUtilBean
BeanUtils 鏄疊eanUtilsBean綾葷殑涓涓畝鍗曞皝瑁咃紝鍚屾牱瀹冪殑鎵鏈夋柟娉曢兘鏄氳繃鐩存帴璋冪敤BeanUtilsBean 涓悓鍚嶆柟娉曞疄鐜扮殑銆?BR>BeanUtilBean涓ぇ澶氭暟鏍稿績鏂規硶閮芥槸閫氳繃璋冪敤PropertyUtilsBean涓殑鏂規硶瀹炵幇鐨勩傝宲opulate(Object bean, Map properties)鏄嚜宸卞疄鐜扮殑錛屽洜涓鴻繖涓祴鍊艱繃紼嬭棣栧厛瀵箆alue榪涜鏍煎紡鐨勮漿鍖栵紱榪欎釜鏂規硶鎶妏roperties涓殑key涓哄睘鎬у悕錛寁alue涓哄睘鎬х殑鍊鹼紝鍒嗗埆瀵瑰簲鐨勮鍊肩粰bean瀵硅薄銆傚畠閫氳繃setProperty(Object bean, String name, Object value)鏂規硶瀹炵幇閫愪釜璁懼肩殑銆傜敱浜庢鏃剁殑value涓嶄竴瀹氱鍚坆ean涓璶ame灞炴х殑綾誨瀷錛屾墍浠ラ鍏堣鎶妚alue杞崲鎴愬悎閫傜殑鍊鹼紝鐒跺悗鍐嶈鍊箋傚叿浣撶殑綾誨瀷杞崲鏂規硶濡備笅錛?BR>
//榪欑綾誨瀷杞崲鐨勫師鍒欐槸錛氬鏋渧alue鏄疭tring鎴栬匰tring[]錛岄偅涔堣繖涓煎彲鑳戒負浠繪剰鐨勭被鍨嬶紝
//闇瑕佽繘琛岃漿鎹€傚鏋滀負鍏跺畠鐨勭被鍨嬶紝鍒欎笉榪涜浠諱綍杞崲銆?BR> if (type.isArray() && (index < 0)) {
// 濡傛灉鏄洿鎺ュ涓涓暟緇勮祴鍊鹼紝鍒欎嬌鐢╟onvert(String values[], Class clazz)鏂規硶杞崲
if (value == null) {
String values[] = new String[1];
values[0] = (String) value;
newValue = getConvertUtils().convert((String[]) values, type);
} else if (value instanceof String) {
String values[] = new String[1];
values[0] = (String) value;
newValue = getConvertUtils().convert((String[]) values, type);
} else if (value instanceof String[]) {
newValue = getConvertUtils().convert((String[]) value, type);
} else {
newValue = value;
}
} else if (type.isArray()) {
// 濡傛灉鏄鏁扮粍鐨勬煇涓涓厓绱犺祴鍊鹼紝鍒欎嬌鐢╟onvert(String value, Class clazz)鏂規硶杞崲
if (value instanceof String) {
newValue = getConvertUtils().convert((String) value, type.getComponentType());
} else if (value instanceof String[]) {
newValue = getConvertUtils().convert(((String[]) value)[0],type.getComponentType());
} else {
newValue = value;
}
} else {
// 鍚﹀垯灝辨槸涓瀵逛竴鐨勭畝鍗曡祴鍊鹼紝鍒欎嬌鐢╟onvert(String value, Class clazz)鏂規硶杞崲
if ((value instanceof String) || (value == null)) {
newValue = getConvertUtils().convert((String) value, type);
} else if (value instanceof String[]) {
newValue = getConvertUtils().convert(((String[]) value)[0], type);
} else if (getConvertUtils().lookup(value.getClass()) != null) {
newValue = getConvertUtils().convert(value.toString(), type);
} else {
newValue = value; }
}