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:
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="#{corretor}"/> </h:selectOneMenu>