Struts 2, Enum [RESOLVIDO]

Estou com um problema quando utilizo o enum e o struts!

Tenho um enum do tipo sexo (masculino e feminino).

public enum Sexo {
	/**
	 *
	 */
	MASCULINO(1), /**
	 *
	 */
	FEMININO(2);
}

e na jsp tenho um um radio onde seleciona masculino e feminino.

<s:radio name="bean.sexo" list="%{#{1:'Masculino',2:'Feminino'}}" />

Entretanto o valor nunca é repassado para a action ou informado na página!
alguem sabe como sair desse problema ?

Amigo,

Se for possivel, manda o codigo da tua Action e do teu “bean” se possivel.

Assim, nos ajuda a te ajudar :wink:

o Bean

public class Pessoa {

	private int idPessoa;

	private String nome;

	private Sexo sexo;
}

O enum

public enum Sexo {
	/**
	 *
	 */
	MASCULINO(1), /**
	 *
	 */
	FEMININO(2);
}

A action

public class PessoaAction extends ActionSupport {

	public String execute() {
             return "paginacadastro"
        }
	public String primeiro() {
             //pesq BD
             return "paginacadastro"
        }
	public String anterior() {
             //pesq BD
             return "paginacadastro"
        }
	public String proximo() {
             //pesq BD
             return "paginacadastro"
        }
	public String ultimo() {
             //pesq BD
             return "paginacadastro"
        }
	public String save() {
             //Save BD
             return "paginacadastro"
        }
}

Na jsp esta assim!

      <s:radio name="pessoa.sexo" list="%{#{1:'Masculino',2:'Feminino'}}" />

toda vez que os valores vem da jsp o struts sempre acusa “Invalid field value for field “pessoa.sexo”.”

O que eu fiz (que ficou meio porco, e não sei pq só funcionou p/ um enum e não para os outros, hauhauahu) foi o seguinte:
Na action de resposta (do form), tem o set, no seu caso o setSexo. O que eu queria (e não funcionou) foi usar o enum como parâmetro:

public void setSexo (Sexo sexo) { this.sexo = sexo; }

O que eu tentei fazer foi o seguinte:

public void setSexo (String id) { this.sexo = Sexo.values()[Integer.parseInt(idSexo)]; }

Já que o jsp estava retornando o id, pelo menos no meu caso (no jsp eu coloquei o id no “listKey”).

O problema: isso funcionou p/ um enum, e não para os outros!!!

Se alguém tiver uma resposta melhor, menos nas coxas, por favor, me avise =P

E espero ter ajudado!

depois do que disse encontrei a solução!

Em todo bean que apresenta o enum eu fiz isso!

public class A {
   ...
   private Myenum myenum;

   public Myenum getMyenum(){
      return myenum;
   }

   public setMyenum(Myenum myenum){
      this.myenum= myenum;
   }

   public setMyenum(int myenum){
      this.myenum= Myenum.fromInt(myenum);
   }
}


public enum Myenum{
     VALOR1(1), VALOR2(2);

   public static Myenum fromInt(int value){
      switch(value)
         case 1: return VALOR1;
         case 2: return VALOR2;
         default: return null;
   }
}

pelo menos para mim resolveu!