JSF 2.0 com selectItems

Prezados,

estou de volta pedindo novamente ajuda para vocês. Estou desenvolvendo um aplicativo com JSF 2.0 e estou com um pequeno problema. Meu código tá da seguinte forma:

inserirVenda.xhtml

    ...  
    <h:selectOneMenu valueChangeListener="#{venda.carregarProdutos}" immediate="true">  
          <f:selectItems value="#{venda.lojas}"  
                        var="loja" itemLabel="#{loja.nmLoja}" itemValue="#{loja.idLoja}" />  
          <f:ajax event="change" render="produtos"/>  
      </h:selectOneMenu>  
      <br/>  
      <h:selectOneMenu id="produtos">  
          <f:selectItem itemLabel="[Selecione um produto]" itemValue="" />  
          <f:selectItems value="#{venda.produtos}" />  
      </h:selectOneMenu>  
      <br/>  
    ...  

VendaBean

    ...  
    public void carregarProdutos(ValueChangeEvent evento){  
             
            String idLoja = evento.getNewValue().toString();  
            produtos = new ArrayList<Produto>();  
        
            //O método abaixo seta a variável produtos.      
            listaProdutos(idLoja);  
             
    }  
    ...  

Pronto!!!Meu problema é que ao mudar o valor do selectItems de loja era para ele popular os produtos, porém ele não chama o método carregarProdutos…Agora o que mais achei interessante que fiz um exemplo por fora, mas ao invès de colocar o selectItems, coloquei o selectItem(no primeiro select-loja) setando os valores já fixos…e dessa forma deu certo…

    <h:selectOneMenu valueChangeListener="#{venda.carregarProdutos}" immediate="true">  
          <f:selectItem itemLabel="Loja A" itemValue="1" />  
          <f:selectItem itemLabel="Loja B" itemValue="2" />  
          <f:ajax event="change" render="produtos"/>  
      </h:selectOneMenu>  

O que estou fazendo de errado…ou o que está faltando no código???

Att.,
Marcelo Ramos

Seu h:selectOneMenu precisa de um converter para mostrar seu objeto como uma String, por isso seu seu exemplo com valores fixos funciona, eles já estao “convertidos” em Strings.
da uma olhada nesse post que mostra como fazer um converter genérico e que pode ser utilizado para todo tipo de classe:
http://www.rponte.com.br/2008/07/26/entity-converters-pra-da-e-vender/

Olá satangoss,

Valeu pela resposta/dica, mas consegui resolver da seguinte maneira:

<f:ajax event=“change” render=“produtos” listener="#{venda.carregarProdutosAjax}"/>

e implementei o método passando como parâmetro AjaxBehaviorEvent

Obrigado a todos…