@@ -105,7 +105,8 @@ private ObjectFormatter getObjectFormatter(Field field, Class<?> fieldClazz) {
105
105
Formatter formatter = field .getAnnotation (Formatter .class );
106
106
if (formatter != null ) {
107
107
if (!formatter .formatter ().equals (ObjectFormatter .class )) {
108
- return initFormatter (formatter .formatter ());
108
+ ObjectFormatter objectFormatter = initFormatter (formatter .formatter ());
109
+ objectFormatter .initParam (formatter .value ());
109
110
}
110
111
}
111
112
return initFormatter (ObjectFormatters .get (fieldClazz ));
@@ -311,6 +312,9 @@ private Object processSingle(Page page, String html, boolean isRaw) {
311
312
}
312
313
if (fieldExtractor .getObjectFormatter () != null ) {
313
314
Object converted = convert (value , fieldExtractor .getObjectFormatter ());
315
+ if (converted == null && fieldExtractor .isNotNull ()) {
316
+ return null ;
317
+ }
314
318
setField (o , fieldExtractor , converted );
315
319
} else {
316
320
setField (o , fieldExtractor , value );
@@ -332,7 +336,11 @@ private Object processSingle(Page page, String html, boolean isRaw) {
332
336
333
337
private Object convert (String value , ObjectFormatter objectFormatter ) {
334
338
try {
335
- return objectFormatter .format (value );
339
+ Object format = objectFormatter .format (value );
340
+ if (logger .isDebugEnabled ()) {
341
+ logger .debug ("String " + value + " is converted to " + format );
342
+ }
343
+ return format ;
336
344
} catch (Exception e ) {
337
345
logger .error ("convert " + value + " to " + objectFormatter .clazz () + " error!" , e );
338
346
}
@@ -351,6 +359,9 @@ private List<Object> convert(List<String> values, ObjectFormatter objectFormatte
351
359
}
352
360
353
361
private void setField (Object o , FieldExtractor fieldExtractor , Object value ) throws IllegalAccessException , InvocationTargetException {
362
+ if (value ==null ){
363
+ return ;
364
+ }
354
365
if (fieldExtractor .getSetterMethod () != null ) {
355
366
fieldExtractor .getSetterMethod ().invoke (o , value );
356
367
}
0 commit comments