| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  22-05-2007, 17:33 | #1 | |
| Senior Member Iscritto dal: Nov 2005 Città: Bologna 
					Messaggi: 1303
				 | 
				
				[JAVA+STRUTS2+HIBERNATE] Enumerativi
			 
		Non so quanti di voi usino queste tecnologie, ma ho un poblema e mi da fastidio no saperlo risolvere     Semplifichiamo le cose al massimo: Ho un campo dell'oggetto che è un enumerativo. Utilizzando Hibernate lo riesco a mappare nel DB con intero con la semplice annotations @Enuemerated. Codice: @Entity
public class MyObject
{
private MyEnum enum;
@Enumerated
public MyEnum getEnum()
{
return enum;
}
public void setEnum(MyEnum enum)
{
this.enum = enum;
}
}
public enum MyEnum
{
PRIMO,
SECONDO,
TERZO
}Ora vorrei che l'oggetto venisse caricato da una form. Quindi uso struts e creo la relativa action. Codice: public class MyAction extends ActionSupport
{
	private MyObjecft object;
	
	public String execute() throws Exception 
	{
		if(getObject() == null)
		{		
			return INPUT;
		}	
		
		//Salvo i dati nel DB utilizzando Hibernate
		return SUCCESS;
	}
	public void setObject(MyObject object)
	{
		this.object= object;
	}
	
	public MyObject getObject()
	{
		return object;
	}
	
        // METODO PER OTTENERE LA LISTA DELLE OPZIONI
}Codice: <s:radio label="enumerativo" list="mysterymethod" name="object.enum"></s:radio> Se io uso questo: Codice: 	public Map<MyEnum, String> getMyEnums() 
	{
		Map<MyEnum, String> map = new HashMap<MyEnum, String>();
		
		for(MyEnum enum: MyEnum.values())
		{
			map.put(enum,enum.name());
		}
		
		return map;
	}Quote: 
 Se invece utilizzo gli interi, e quindi Codice: 	public Map<Integer, String> getMyEnums() 
	{
		Map<Integer, String> map = new HashMap<Integer, String>();
		
		for(MyEnum enum: MyEnum.values())
		{
			map.put(enum.ordinal(),enum.name());
		}
		
		return map;
	}Codice: 	public Integer getEnum() 
	{
		return enum.ordinal();
	}
	
	
	public void setEnum(Integer enum) 
	{
		this.enum = MyEnum.values()[enum];
	}Il bello è che se modifico in questo modo il setter Codice: 	public Object getEnum() 
	{
		return enum;
	}
	
	
	public void setEnum(Object enum) 
	{
		System.out.println(enum.getClass().getCanonicalName());
	}Evidentemente Struts fa il casting in automatico delgi interi, ma degli enum no. C'è un metodo per riuscire a leggere direttamente il risultato della scelta come enumerativo?? Se la risposta è no, quale è il metodo più eleganete per continuare ad utilizzare nella applicazione gli enumerativi ( che garantiscono type-safe) e leggere attravero gli interi?? GARZIE GRAZIE    P.S.: spero di essere stato chiaroe di non avervi affto addormentare con la lunghezza del post | |
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 12:01.









 
		 
		 
		 
		






 
  
 



 
                        
                        










