Valeu pela dica Digao mas agora estou com outro problema:
Puxa vida…
Com Lista de String funcionou certinho, o problema é que eu preciso realmente da lista de objetos do tipo empresa.
Estou fazendo um converter e debugando,
Quando eu seleciono uma empresa ele chama o metodo getAsObject do converter e retorna a empresa que eu selecionei…
O problema é que eu nao sei pra onde ele retorna pq esse valor nao vai para nenhum lugar!
Eu gostaria que fosse para o objeto empresa dentro do meu bean, mas ele nao chama o set
o xhtml esta assim:
<f:ajax event="change" immediate="true" listener="#{cadastrarColetorSamasBean.selecionarEmpresa()}" >
<h:selectOneMenu value="#{cadastrarColetorSamasBean.empresa}" id="empresa" styleClass="xxlarge " >
<f:selectItems value="#{cadastrarColetorSamasBean.empresas}" var="empresa" itemValue="#{empresa}" itemLabel="#{empresa.razaoSocial}" />
</h:selectOneMenu>
</f:ajax>
No managed bean:
// CAMPOS EMPRESA
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
// Método realizado ao alterar o select
public String selecionarEmpresa() {
Logger.getLogger(CadastrarColetorSamasBean.class.getName()).log(Level.INFO, "Empresa selecionada::: {0}", empresa.getIdEmpresa());
return null;
}
//Popular Combo de Empresa
public List<Empresa> getEmpresas() throws ClassNotFoundException, SQLException {
List<Empresa> listaEmpresasSelect = new ArrayList();
if (this.empresas == null) {
List<Empresa> empresas = coletorSamasService.popularListaEmpresas();
for (Empresa e : empresas) {
listaEmpresasSelect.add(new Empresa(e.getIdEmpresa(), e.getRazaoSocial()));
}
}
return listaEmpresasSelect;
}
E o Converter:
@FacesConverter(forClass = Empresa.class)
public class EmpresaConverter implements Converter {
private EmpresaDao daoEmpresa;
public EmpresaConverter() throws NamingException {
daoEmpresa = new EmpresaDao();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value != null && value.trim().length() > 0) {
int id = Integer.valueOf(value);
return daoEmpresa.getEmpresaById(id);
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null) {
Empresa empresa = (Empresa) value;
return empresa.getIdEmpresa().toString();
}
return "";
}
Alguém sabe para onde está sendo retornado a empresa retornada pelo getAsObject do Converter?