2013-11-04 6 views
17

Ho due classi java con gli stessi nomi di proprietà. Come posso copiare tutte le proprietà in un altro bean pieno di dati. Non voglio usare il modulo tradizionale per copiare le proprietà perché ho molte proprietà.Come copiare le proprietà da un bean a un altro bean in una classe diversa?

Grazie in anticipo.

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 classe

public class UserBean { 

    private String userSessionId; 
    private String userId; 
    private String name; 
    .................... 
+0

duplicati di http://stackoverflow.com/q/5937567/193634 –

risposta

29

Uso BeanUtils:

import org.apache.commons.beanutils.BeanUtils; 

UserBean newObject = new UserBean(); 
BeanUtils.copyProperties(newObject, oldObject); 
+4

NON è BeanUtils.copyProperties (oldObject, newObject) ma BeanUtils.copyProperties (newObject, oldObject)! – electrotype

+11

Se si utilizzano org.springframework.beans.BeanUtils, utilizzare come 'BeanUtils.copyProperties (oldObject, newObject);' –

1

Se si utilizza la biblioteca di Apache, BeanUtils, si può farlo facilmente:

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

In particolare, guarda copyProperties (Object, Object)

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

valori delle proprietà Copia dall'origine fagiolo per il fagiolo di destinazione per tutti i casi in cui i nomi di proprietà sono lo stesso.

0

Utilizzare java reflection per impostare e ottenere valori di proprietà. Esiste una proprietà del bean spring che fa l'accesso al valore della proprietà. Ti consiglierei il riflesso java.

1

Controlla il Dozer Framework - è un oggetto per il framework di mappatura degli oggetti. L'idea è quella:

  • Di solito verrà mappato per convenzione.
  • È possibile sovrascrivere questa convenzione con un file di mapping.

. . quindi i file di mappatura sono il più compatti possibile. È utile in molti casi, come mappare un caso di utilizzo per specificare il carico utile del servizio sugli oggetti del modello principale riutilizzabili.

Quando consegnavo i corsi di formazione SpringSource, eravamo soliti indicare questo framework molto spesso.

+0

Btw: ho votato per chiudere questo problema come un duplicato, e ampliato la risposta Dozer esistente qui : http://stackoverflow.com/q/5937567/193634 –