Dúvida Enums e EL

2 respostas
renandemelo

Pessoal, seguinte,

em um certo ponto da minha aplicação preciso diferenciar tipos de usuário em uma página usando JSTL. Estes diferentes tipos estão armazenados na sessão do usuário, por um atributo chamado “tipoDeUsuario”, que é um objeto Enum que pode ser {CLIENTE,ATENDENTE,ADMINISTRADOR}. Como é um enum, estava precisando compará-lo com o valor deste objeto através de EL.

Ex:

<c:if test="${sessionScope.tipoDeUsuario == br.com.s2k.helpnet.model.TipoDeUsuario.CLIENTE}"></c:if>

Porém, isto não está funcionando, o objeto tipo de usuário ele está achando porém o objeto estático da classe TipoDeUsuario não…

Alguém sabe como posso resolver este problema?

2 Respostas

marciobarroso

E ae.

Implemente seu Enum desta forma :

public interface GenericEnum {
	
	/**
	 * Método responsavel por retornar a descrição
	 * @return String
	 */
	public String getDescricao();
	
	/**
	 * Método responsavel por retornar o id
	 * @return int
	 */
	public int getValor();
}
public enum TipoFone implements GenericEnum {
	
	RESIDENCIAL {
		int valor(){
			return 1;
		}
		String descricao(){
			return toString();
		}
	},
	COMERCIAL {
		int valor(){
			return 2;
		}
		String descricao(){
			return toString();
		}
	};

	abstract int valor();
	abstract String descricao();

	public String getDescricao() {
		return this.toString();
	}

	public int getValor() {
		return this.valor();
	}
}

E na hora de compará-los, use simplesmente :

&lt;c:if test="${sessionScope.tipoFone.descricao == br.com.s2k.helpnet.model.TipoFone.COMERCIAL}"&gt;&lt;/c:if&gt;

Espero ter esclarecido sua dúvida.

Abraço,

renandemelo

Esclareceu sim,

Muito obrigado!!

Criado 23 de novembro de 2006
Ultima resposta 23 de nov. de 2006
Respostas 2
Participantes 2