Olá Pessoal, estou precisando fazer um converter, aliás até já implementei um entretanto está dando uma exception.
O caso é que tenho um Enum com algumas opções e numa página JSF, o usuário escolhe uma opção, eu seto essa opção num tipo do mesmo Enum no Bean e lá efetuo uma busca (Lá preciso desse objeto lá no bean…não pode ser a String correspondente no JSF)
Segue o código do converter:
public class ConverterOperador implements Converter {
@Override
public Object getAsObject(FacesContext facesContext,
UIComponent uiComponent,
String param) {
Operadores operador = null;
try {
Operadores [] lista = Operadores.values();
for (int i = 0; i<lista.length ; i++){
if (Integer.parseInt(param) == lista[i].getCodigo()){
operador = lista[i];
}
}
} catch (Exception e) {
throw new ConverterException(e);
}
return operador;
}
@Override
public String getAsString(FacesContext facesContext,
UIComponent uiComponent,
Object obj) {
String descricao = null;
try {
Operadores[] lista = Operadores.values();
for (int i= 0; i<lista.length; i++){
if (Integer.valueOf(lista[i].getCodigo()).equals(obj)) //Aqui o erro acontece
descricao = lista[i].getDescricao();
}
} catch (Exception e) {
throw new ConverterException(e);
}
return descricao;
}
}
CastException do Enum para o Integer…eu tenho que pegar o SelectItem correspondente que o camarada selecionou na interface e converter para o enum. Eu não entendo pq nesse caso eu precisaria desse segundo método para retornar a String correspondente pois a princípio o único que ia me atender seria o primeiro método pois esse sim retornaria um objeto. Mas empaca nesse segundo método que ao meu ver nem seria chamado… Ou o converter executa os dois métodos em cada requisição? Alguém pode me explicar melhor essa questão de converters?
