Ответ 1
Если вы хотите игнорировать null
-value, вы должны сделать это со следующей строкой кода перед копированием свойств:
BeanUtilsBean.getInstance().getConvertUtils().register(false, false, 0);
Spring BeanUtils.copyProperties()
предоставляет возможность игнорировать определенные свойства при копировании beans:
public static void copyProperties(Object source,
Object target,
String[] ignoreProperties) throws BeansException
Предоставляет ли Apache Commons BeanUtils аналогичную функцию?
Также можно игнорировать нулевые значения при использовании Spring BeanUtils.copyProperties()
, я вижу эту функцию с Commons BeanUtils:
Date defaultValue = null;
DateConverter converter = new DateConverter(defaultValue);
ConvertUtils.register(converter, Date.class);
Можно ли добиться того же результата с Spring BeanUtils?
Если вы хотите игнорировать null
-value, вы должны сделать это со следующей строкой кода перед копированием свойств:
BeanUtilsBean.getInstance().getConvertUtils().register(false, false, 0);
Если вы используете org.springframework.beans.BeanUtils
, вы можете игнорировать определенные свойства, используя метод copyProperties(Object source, Object target, String... ignoreProperties)
. Пример,
BeanUtils.copyProperties(sourceObj, targetObj, "aProperty", "another");
Это пример кода, который я использую для пропуска пустых полей при копировании в целевой файл. Вы можете добавить проверки для определенных свойств, используя имя свойства, значение и т.д. Я использовал org.springframework.beans.BeanUtils
public static void copyNonNullProperties(Object src, Object target) {
BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
}
public static String[] getNullPropertyNames(Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<String>();
for (PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null)
emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}