Combobox Enum Jboss Seam

4 respostas
awilaz

Boa tarde pessoal,

Estive dando uma olhada nos foruns e também em algumas documentações e não encontrei.
Bom Eu tenho uma classe Enum abaixo:

public enum Medida {
	
	GARRAFA("Garrafa"),
	GRAMAS("Gramas"),
	LATA("Lata"),
	LITRO("Litro"),
	MILILITROS("Mililitros"),
	QUILOGRAMAS("Quilogramas"),
	UNIDADE("Unidade");

	private String descricao;
	
	Medida(String descricao) {
		this.descricao = descricao;
	}
	
	public String getDescricao() {
		return this.descricao;
	}

}

Eu gostaria de fazer no .xhtml um combo com os valores dessa classe Enum.
Parece que o Seam tem umas anotações para auxiliar nisso…
mas não encontrei algo sobre como fazer
Será que tenho que ter o converter?
Alguém já fez isso ou sabe como se faz?

Obrigado.

4 Respostas

V

Cara, isso tem no manual do SEAM.

Segue…

32.1.2.3. <s:convertEnum>
Description
Assigns an enum converter to the current component. This is primarily useful for radio button and
dropdown controls.
Attributes
None.
Usage

<h:selectOneMenu value="#{person.honorific}">
<s:selectItems value="#{honorifics}" var="honorific"
label="#{honorific.label}"
noSelectionLabel="Please select" />
<s:convertEnum />
awilaz

Então… até aí tudo bem…

Não entendi como chamar o Enum nesse componente.

Eu fiz uma classe Converter… e nem sei se era necessária.

@Name("perfilConverter")
@BypassInterceptors
@Converter(forClass=Perfil.class)
public class PerfilConverter implements javax.faces.convert.Converter{

	public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) {
		if (value == null) {
			return null;
		}
		else {
			try {
				return Perfil.valueOf(value);
			}
			catch (Exception e) {
				return null;
			}
		}

	}

	public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
		if (value == null) {
			return null;
		}
		Perfil perfil = (Perfil)value;
		return perfil.toString();
	}

}

Agora aqui é que não entendi…

&lt;h:selectOneMenu value="#{usuarioBean.usuario.perfil}"&gt;
      							&lt;s:selectItems value="#{br.com.kaj.enums.Perfil}" var="perfil" label="#{perfil.label}" noSelectionLabel="Selecione" /&gt;
     							&lt;s:convertEnum /&gt;
  							&lt;/h:selectOneMenu&gt;
V

Eu costumo fazer do seguinte jeito:

Arrays.asList(TeuEnum.values())

E utilizo o converter do próprio SEAM:

<s:convertEnum />
awilaz

Mano obrigado pela dica… valeu mesmo.

Criado 5 de dezembro de 2008
Ultima resposta 8 de dez. de 2008
Respostas 4
Participantes 2