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