Problema Enum

Bom dia, estou tentando carregar algumas combos aqui pelo enum, mais não estou conseguindo traduzir a chave do properties, como eu faço isso?
Vou postar partes enum, meu managed bean, e do arquivo xhtml!

ENUM:

[code]public enum TipoDocumento {

/**
 * Documento de Entrada
 */
ENTRADA((byte) 0, "Entrada", "tipodocumento.entrada"),

/**
 * Documento de Saída
 */
SAIDA((byte) 1, "Saída", "tipodocumento.saida");

/**
 * Código.
 */
private byte codigo;

/**
 * Descrição. 
 */
private String descricao;

/**
 * Chave properties.
 */
private String chave;

/**
 * Construtor
 *
 * @param codigo
 * @param descricao
 * @param chave
 */
private TipoDocumento(byte codigo, String descricao, String chave) {
	this.codigo = codigo;
	this.descricao = descricao;
	this.chave = chave;
}

/**
 * Método para retornar a lista de tipos de documentos.
 *
 * @return - Lista de tipos de documentos.
 */
public static List<TipoDocumento> getLista(){
	List<TipoDocumento> lista = new ArrayList<TipoDocumento>();
	
	lista.add(ENTRADA);
	lista.add(SAIDA);
	
	return lista;
}

/**
 * Método para pegar um tipo a partir de um código.
 *
 * @param codigo
 * @return
 */
public static TipoDocumento getTipo(byte codigo){
	
	for (TipoDocumento tipo : getLista()){
		if (tipo.getCodigo() == codigo){
			return tipo;
		}
	}
	
	return null;
}

/**
 * Método acessor para obter o valor do atributo codigo.
 *
 * @return Retorna o atributo codigo.
 */
public byte getCodigo() {
	return codigo;
}

/**
 * Método acessor para obter o valor do atributo descricao.
 *
 * @return Retorna o atributo descricao.
 */
public String getDescricao() {
	return descricao;
}


/**
 * Método acessor para obter o valor do atributo chave.
 *
 * @return Retorna o atributo chave.
 */
public String getChave() {
	return chave;
}

[/code]

MANAGED BEAN:

      /**
	 * Construtor
	 *
	 */
	public NotaFiscalControle() {
		super();
		tipoDocumento.addAll(TipoDocumento.getLista());
        }

XHTML:

<h:panelGrid>
	<h:outputLabel value="#{msgs['notas.fiscais.tipo.documento']}" styleClass="label" for="idTipoDocumento" />
		<rich:select id="idTipoDocumento" enableManualInput="true" styleClass="comboTipoDocumento">
			<f:selectItems value="#{notaFiscalControle.tipoDocumento}" var="item" itemLabel="#{item.chave}" itemValue="#{item.codigo}" />
		</rich:select>
</h:panelGrid>

O que devo fazer para que o enum possa traduzir a chave do properties??
Porque na tela não sai “Entrada”, “Saída”, saí “tipodocumento.entrada” e “tipodocumento.saida” !!

Ajuda, please?
Obrigada!

Que tal ajudar-nos a te ajudar e postar o código nas tags [code]?

Onde está o construtor do Enum?

por favor, edite seu post e insira o código entre as tags

Melhorou, desculpem esqueci de colocar !!!

veja o que você fez: ENTRADA((byte) 0, "Entrada", "tipodocumento.entrada");0 - codigo
“Entrada” - descricao
“tipodocumento.entrada” - chave.

Isso de acordo com seu construtor:private TipoDocumento(byte codigo, String descricao, String chave) { this.codigo = codigo; this.descricao = descricao; this.chave = chave; } portanto se você quer que apareça a descrição, não deve colocar a chave no itemLabel do seu rich:select

O que é exibido no combo é o

itemLabel="#{item.chave}"

no seu caso “tipodocumento.entrada” ou “tipodocumento.saida”.
Mude para

itemLabel="#{item.descricao}"

Eu sei disso digaoneves, mais eu quero que pegue o valor que está na chave la na classe app.properties !

Não quer que pegue da Descrição do enum, pq assim a chave nem seria usada aqui eu poderia apenas colocar assim:

public enum TipoDocumento {
	
	/**
	 * Documento de Entrada
	 */
	ENTRADA((byte) 0, "Entrada"),

	/**
	 * Documento de Saída
	 */
	SAIDA((byte) 1, "Saída");

Entendeu o que quero dizer?
Eu quero saber como faz para que o enum traduza o que está no app.properties e jogue na combo !

Vc tá mexendo com i18n?

Vamos supor que seu app.properties esteja configurado no faces-config.xml como msg, e nele tenha a propriedade ‘tipodocumento.entrada’.

Então basta fazer assim:

<f:selectItems value="#{notaFiscalControle.tipoDocumento}" var="item" itemLabel="#{msg[item.chave]}" itemValue="#{item.codigo}" />

Assim funciona, mais de forma errada, pq ele ñ exerga o código, nem a descrição, e nem a chave, dai ele pega e põe na tela ENTRADA e SAÍDA em maiúsculas , e não usa a chave do app.properties que está escrito Entrada e Saída em minúsculas, entendeu?

como se você está buscando um atributo de um bundle?

aonde estão esses valores ENTRADA e SAÍDA em maiúsculo ?

Os valores estão no Enum:

[b] ENTRADA[/b]((byte) 0, "Entrada", "tipodocumento.entrada"); 

Então eu não to usando nada p chamar um atributo bundle, tem que usar o f:bundle?

Você nem testou a sugestão do lsjunior ?

[quote=lsjunior]Vc tá mexendo com i18n?

Vamos supor que seu app.properties esteja configurado no faces-config.xml como msg, e nele tenha a propriedade ‘tipodocumento.entrada’.

Então basta fazer assim:

<f:selectItems value="#{notaFiscalControle.tipoDocumento}" var="item" itemLabel="#{msg[item.chave]}" itemValue="#{item.codigo}" />

Eu coloquei assim funcionou, mais no item fica dando esse erro aqui: “item” cannot be resolved

<f:selectItems value="#{notaFiscalControle.tipoDocumento}" var="item" itemLabel="#{msgs[item.chave]}" itemValue="#{item.codigo}" /> 

Mais esse erro não está interferindo, só fica aquele risco amarelo em baixo do item, mais valeu pela ajuda !
Abraço.