Problema com converter JSF
Olá pessoal!
Estou penando pra fazer funcionar um converter em um h:selectOneMenu. Já tentei várias formas diferentes e não consigo fazer com que os dados apareçam no componente. Na verdade, como os dados não aparecem, toda a página onde está o componente fica em branco. Se eu tirar o selectOneMenu, os demais são exibidos. Por um instante, consegui fazer funcionar. Mas de uma hora parou. Cheguei a usar o exemplo do Rafael Pontes que fala sobre as classes BaseEntity, SimpleEntityConverter e SimpleIndexConverter. Funcionou em um primeiro momento, depois parou. Não sei explicar a razão. Não sei mais o que fazer. Agradeço quem puder me auxiliar nesta questão. Segue os códigos atuais:
ClienteBean
CorretorConverter:
Cadastro_Cliente.xhtml:
O que eu não consigo entender é que tenho outro selectOneMenu na mesma página usando o converter da classe (pois criei um converter para cada classe) e este funciona normalmente. Toda relação de descrições são exibidas no componente. Todas as classes que utilizo são iguais, só mudando o nome, mas os métodos etc., são iguais. Como pode pra um componente funcionar e pra outro não, dentro da mesma página?
Estou penando pra fazer funcionar um converter em um h:selectOneMenu. Já tentei várias formas diferentes e não consigo fazer com que os dados apareçam no componente. Na verdade, como os dados não aparecem, toda a página onde está o componente fica em branco. Se eu tirar o selectOneMenu, os demais são exibidos. Por um instante, consegui fazer funcionar. Mas de uma hora parou. Cheguei a usar o exemplo do Rafael Pontes que fala sobre as classes BaseEntity, SimpleEntityConverter e SimpleIndexConverter. Funcionou em um primeiro momento, depois parou. Não sei explicar a razão. Não sei mais o que fazer. Agradeço quem puder me auxiliar nesta questão. Segue os códigos atuais:
ClienteBean
public List<Corretor> getCorretores() {
if (this.corretores == null) {
CorretorRN corretorRN = new CorretorRN();
this.corretores = corretorRN.listar();
}
return corretores;
}
CorretorConverter:
@FacesConverter(value = "corretorConverter")
public class CorretorConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value != null && value.trim().length() > 0) {
Integer codigo = Integer.valueOf(value);
try {
CorretorRN corretorRN = new CorretorRN();
return corretorRN.carregar(codigo);
} catch (Exception e) {
throw new ConverterException("Não foi possível encontrar o corretor de código " + value + ". " + e.getMessage());
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null) {
Corretor corretor = (Corretor) value;
return corretor.getCodigo().toString();
}
return "";
}
}
Cadastro_Cliente.xhtml:
<h:selectOneMenu class="form-control" id="corretor" value="#{clienteBean.cliente.corretor}" converter="corretorConverter" immediate="true">
<f:selectItem itemLabel="Selecione"/>
<f:selectItems value="#{clienteBean.corretores}" var="corretor" itemLabel="#{corretor.nome}" itemValue="#"/>
</h:selectOneMenu>
O que eu não consigo entender é que tenho outro selectOneMenu na mesma página usando o converter da classe (pois criei um converter para cada classe) e este funciona normalmente. Toda relação de descrições são exibidas no componente. Todas as classes que utilizo são iguais, só mudando o nome, mas os métodos etc., são iguais. Como pode pra um componente funcionar e pra outro não, dentro da mesma página?
Sgrandini
Curtidas 0