web-dev-qa-db-fra.com

Comment copier des propriétés d'un bean vers un autre bean dans une classe différente?

J'ai deux Java avec les mêmes noms de propriétés. Comment puis-je copier toutes les propriétés dans un autre bean rempli de données. Je ne veux pas utiliser le formulaire traditionnel pour copier les propriétés parce que j'ai un beaucoup de propriétés.

Merci d'avance.

1 classe

@ManagedBean
@SessionScoped
public class UserManagedBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private String userSessionId;
    private String userId;
    private String name;
    private String adress;
    ......................

2 classes

public class UserBean {

    private String userSessionId;
    private String userId;
    private String name;
   ....................
25
user2683519

Utilisez BeanUtils :

import org.Apache.commons.beanutils.BeanUtils;

UserBean newObject = new UserBean(); 
BeanUtils.copyProperties(newObject, oldObject);
52
Mariusz Jamro

Découvrez Dozer Framework - c'est un framework de mappage objet à objet. L'idée est que:

  • Habituellement, il sera cartographié par convention.
  • Vous pouvez remplacer cette convention avec un fichier de mappage.

. . par conséquent, les fichiers de mappage sont aussi compacts que possible. Son utile pour de nombreux cas, tels que le mappage d'un cas d'utilisation spécifier la charge utile du service sur les objets de modèle de noyau réutilisables.

Lors de la prestation des cours de formation SpringSource, nous avions l'habitude de souligner ce cadre très souvent.

Modifier:

Ces jours-ci, essayez MapStruct .

2
Jasper Blues

Si vous utilisez la bibliothèque d'Apache, BeanUtils, vous pouvez le faire facilement:

http://commons.Apache.org/proper/commons-beanutils/

En particulier, regardez copyProperties (Object, Object)

http://commons.Apache.org/proper/commons-beanutils/apidocs/org/Apache/commons/beanutils/BeanUtils.html#copyProperties (Java.lang.Object , Java.lang.Object )

Copiez les valeurs de propriété du bean d'origine vers le bean de destination dans tous les cas où les noms de propriété sont identiques.

1
sdanzig

Utilisez Java réflexion pour définir et obtenir les valeurs des propriétés. Il existe une propriété de bean à ressort qui fait l'accès aux valeurs de propriété. Je vous recommande Java réflexion.

0
Arvind