BeanUtils.copyProperties convertit le nombre entier nul en 0
J'ai remarqué que BeanUtils.copyProperties(dest, src) a un côté étrange effet. Tous les null Integers
(probablement Long
Date
etc. trop) de convertir à 0 dans les deux objets: source (sic!) et de destination. Version: commons-beanutils-1.7.0
javadoc:
Copier des valeurs de propriété à partir de l'origine de la fève à la destination bean pour
tous les cas où les noms des propriétés sont les mêmes.
Par exemple:
class User {
Integer age = null;
//getters & setters
}
...
User userDest = new User();
User userSrc = new User();
BeanUtils.copyProperties(userDest, userSrc);
System.out.println(userDest.getAge()); //0
System.out.println(userSrc.getAge()); //0
Il peut être très bogué que l'objet source est réellement modifiée. Quelle est la meilleure solution pour faire de "vrais" copie de l'objet avec la valeur null.
source d'informationauteur smas
Vous devez vous connecter pour publier un commentaire.
Vérification http://commons.apache.org/beanutils/api/org/apache/commons/beanutils/ConvertUtilsBean.html il indique la valeur par défaut pour la conversion d'Entier est de 0. C'est parce que le type de destination ici est la primitive int de référence ou d'int et de la primitive int ne peut pas être null.
Vous pouvez remplacer le convertisseur d'Entier et de le remplacer par un autre dont la valeur par défaut est null.
Mise à JOUR: l'Utilisation est
Prendre un coup d'oeil au code source de IntegerConverter - vous définir la valeur par défaut dans le constructeur.
Ok j'ai trouvé ce post
Conversion automatique n'est pas nécessaire dans ce cas, donc le meilleur choix est
PropertyUtils
classe